Ich habe auf einem 68HC11 im College gelernt. Sie sind sehr einfach zu handhaben, aber die meisten Mikrocontroller mit niedriger Leistung sind ähnlich (AVR, 8051, PIC, MSP430). Die größte Sache , die Komplexität zu ASM Programmierung für Mikrocontroller hinzufügen wird , ist die Anzahl und Art der unterstützten Speicheradressierungsart . Sie sollten zunächst kompliziertere Geräte wie ARM-Prozessoren vermeiden.
Ich würde den MSP430 wahrscheinlich als guten Ausgangspunkt empfehlen. Schreiben Sie vielleicht ein Programm in C und lernen Sie, indem Sie verschiedene Funktionen durch Inline-Assemblierung ersetzen. Fange einfach an, x + y = z, etc.
Nachdem Sie eine Funktion oder einen Algorithmus durch Assembly ersetzt haben, vergleichen und vergleichen Sie, wie Sie sie codiert haben und was der C-Compiler generiert hat. Dies ist meiner Meinung nach wahrscheinlich eine der besseren Möglichkeiten, Assembler zu lernen und gleichzeitig zu lernen, wie ein Compiler funktioniert, der als eingebetteter Programmierer unglaublich wertvoll ist. Stellen Sie nur sicher, dass Sie Optimierungen im C-Compiler zuerst deaktivieren, da Sie sonst vom generierten Code des Compilers sehr verwirrt sind. Aktivieren Sie nach und nach Optimierungen und notieren Sie, was der Compiler tut.
RISC gegen CISC
RISC bedeutet "Reduced Instruction Set Computing" und bezieht sich nicht auf einen bestimmten Befehlssatz, sondern nur auf eine Entwurfsstrategie, die besagt, dass die CPU nur über einen minimalen Befehlssatz verfügt. Nur wenige Anweisungen, die jeweils etwas Grundlegendes tun. Dies ist keine strenge technische Definition dessen, was es heißt, RISC zu sein. Auf der anderen Seite haben CISC-Architekturen viele Anweisungen, aber jede tut mehr.
Die beabsichtigten Vorteile von RISC sind, dass Ihr CPU-Design weniger Transistoren benötigt, was einen geringeren Stromverbrauch bedeutet (groß für Mikrocontroller), kostengünstiger und höhere Taktraten, was zu einer höheren Leistung führt. Ein geringerer Stromverbrauch und eine billigere Herstellung sind in der Regel zutreffend. Eine höhere Leistung wurde aufgrund von Designverbesserungen in CISC-Architekturen nicht wirklich dem Ziel gerecht.
Fast alle CPU-Kerne sind heutzutage RISC- oder Middle-Ground-Designs. Selbst mit der berühmtesten (oder berüchtigtsten) CISC-Architektur, x86. Moderne x86-CPUs sind interne RISC-ähnliche Kerne mit einem am Frontend verschraubten Decoder, der x86-Anweisungen in mehrere RISC-ähnliche Anweisungen aufteilt. Ich denke, Intel nennt diese "Micro-Ops".
Was (RISC vs CISC) in der Montage leichter zu lernen ist, halte ich für einen Fehler. Um etwas mit einem RISC-Befehlssatz zu tun, sind im Allgemeinen mehr Assemblierungszeilen erforderlich als mit einem CISC-Befehlssatz. Andererseits ist das Erlernen von CISC-Anweisungssätzen aufgrund der größeren Anzahl verfügbarer Anweisungen komplizierter.
Der Hauptgrund, warum CISC einen schlechten Ruf bekommt, ist, dass x86 bei weitem das häufigste Beispiel ist und es ein bisschen chaotisch ist, damit zu arbeiten. Ich denke, das liegt hauptsächlich daran, dass der x86-Befehlssatz sehr alt ist und ein halbes Dutzend Mal oder öfter erweitert wurde, während die Abwärtskompatibilität beibehalten wurde. Sogar Ihr 4,5-GHz-Core i7 kann im 286-Modus ausgeführt werden (und zwar beim Booten).
Was ARM als RISC-Architektur betrifft, würde ich dies als mäßig umstritten betrachten. Es ist sicherlich eine Load-Store-Architektur. Der Basisbefehlssatz ist RISC-ähnlich, aber in den letzten Überarbeitungen ist der Befehlssatz so weit gewachsen, dass ich ihn persönlich eher als Mittelweg zwischen RISC und CISC bezeichnen würde. Der Befehlssatz "thumb" ist wirklich der "RISCish" der ARM-Befehlssätze.