Lernen, in der Versammlung zu programmieren - Nützliche Ressourcen [geschlossen]

10

In Anlehnung an einen früheren Thread habe ich mich dafür interessiert, etwas über die Assembly-Programmierung zu lernen. Nicht so sehr, um nützliche Apps programmieren zu wollen, nur um ein Gefühl für Low-Level-Programmierung zu bekommen, um besser zu verstehen, was passiert.

Kann jemand Anfängern Bücher oder Online-Ressourcen empfehlen?

Vielen Dank.

Darren Young
quelle
Dieses Buch von Dr. Paul Carter war ziemlich gut für x86 ASM.
Jonescb

Antworten:

5

Empfohlenes Buch: Die Kunst der Assembler-Programmierung .

Diese Seite hat mir auch gefallen . Schöne Einführung in die Baugruppenprogrammierung! Ich habe diese Seite als Referenz verwendet, während ich für meinen Kurs über Mikroprozessoren und Mikrocontroller studiert habe.

Ykombinator
quelle
Großartig, danke. Wie intuitiv fanden Sie es aus Interesse, es im Vergleich zu einer typischen modernen Sprache zu lernen? Meine Geschichte ist 6 Monate c # (in der Industrie) und ungefähr zur gleichen Zeit C ++ (in meinem Schlafzimmer :))
Darren Young
1
In meinem Kurs bin ich auf Assembly-Programmierung gestoßen (ich bin noch ein Student), und wie Sie in Ihrer Frage sagten, war es hilfreich zu wissen, wie eingebettete Systeme funktionieren und alles. Im Vergleich zu Hochsprachen (wie Sie sagen modern) fand ich es jedoch nicht sehr nützlich. Sie werden es in meinem Bereich - der Webentwicklung - niemals verwenden. :)
Ykombinator
2

Ist dies eine akademische Übung oder beabsichtigen Sie, die Assemblersprache zu verwenden, die Sie lernen? Das ist heutzutage ziemlich spezialisiert. Die Compiler-Optimierung ist so gut geworden, dass selbst bei einem Hochleistungs-Festplattenlaufwerk in der Regel etwa 1% der Codebasis in Assembler geschrieben ist. Wenn Sie die Nahrungskette entlang zu 4-Bit- oder einigen 8-Bit-Prozessoren gehen, wird viel mehr Assemblersprache verwendet.

Wenn Sie die Assemblersprache wirklich ausprobieren möchten, wählen Sie einen Prozessor mit einem schönen Befehlssatz. Ich bin ein ehemaliger ARM-Mitarbeiter, daher bin ich wahrscheinlich voreingenommen, aber ich fand, dass der ARM-Befehlssatz besonders leicht zu erlernen war. An meinem dritten Tag im Unternehmen konnte ich einen effizienten FIR-Filter in asm schreiben. Die Halbleiterpartner von ARM liefern heutzutage etwa eine Milliarde ARM-Kerne pro Quartal aus. Daher ist es ziemlich einfach, ein Unternehmen zu finden, das bereit ist, Ihr ARM ASM-Know-how zu nutzen.

Es gibt viele ARM-Evaluierungskarten für etwa 50 US-Dollar, mit denen Sie Ihren Code ausprobieren können - es sieht so aus, als würde ARM Cortex M3 sehr beliebt sein. Es verwendet den Thumb2-Befehlssatz von ARM, der etwas dunkler als der alte ARM32-Code ist, aber dennoch ziemlich einfach und sehr leistungsfähig.

Dieses kleine Board sieht für 80 Euro sehr cool aus: http://www.olimex.com/dev/stm32-103stk.html

geekbrit
quelle
Es ist rein akademisch / selbstlernend. Ich möchte die Speicherverwaltung auf niedriger Ebene sowie die Sprachen auf höherer Ebene besser verstehen.
Darren Young
1

Grundsätzlich müssen Sie im Sinne der Assembler-Programmierung zuerst die zugrunde liegende Architektur kennen, dann die entsprechende Sprache, z. B. bei den PIC-Mikrocontrollern können Sie den bereitgestellten Compiler und die Sprache verwenden. Ich verwende diese Site, um auf PIC-Mikrocontroller-Tutorials zu verweisen.

Abimaran Kugathasan
quelle
1

Ich fand immer, dass der schwierigste Teil die Hallo-Welt war, die normalerweise nur eine triviale Assem-Funktion ist, die aus einer höheren Sprache aufgerufen wird, wie das Hinzufügen von zwei Zahlen. Sobald Sie diese Hürde überwunden haben, müssen Sie Ihrem Repertoire lediglich Anweisungen und Pseudo-Ops (wie das Definieren von Daten) hinzufügen.

Ich würde Geekbrit unterstützen, obwohl ich ARM noch nie benutzt habe. Eine solche minimale Architektur wäre nicht nur einfacher, sondern könnte einer legitimen Architektur am nächsten kommen - im Gegensatz zu nur einem didaktischen Zweck.

Omega Centauri
quelle
0

Ich habe einen Befehlssatz, einen Assembler und einen Simulator mit einigen Lektionen, die nur für diesen Zweck erstellt wurden. Ich habe noch kein Feedback darüber, wie gut oder schlecht ich es getan habe, aber es ist da draußen. Geben Sie ihm 15 Minuten oder eine halbe Stunde, um zu sehen, ob es Ihnen etwas beibringt. http://github.com/dwelch67/lsasim Danach habe ich einige Mainstream-Befehlssatzsimulatoren, die Sie ebenfalls ausprobieren können, einfach, ohne Schnickschnack, sollten überall dort ausgeführt werden, wo Sie einen C-Compiler haben usw.

Oldtimer
quelle