Ich arbeite gerade an so etwas, bin aber noch nicht bereit, etwas davon zu veröffentlichen. (zumindest nicht öffentlich)
Ich denke, Sie müssen Ihre Frage jedoch bearbeiten / verfeinern. Einen allgemeinen Stich bei der Frage machen. Ich würde mit etwas Einfacherem als ARM und x86 beginnen und x86 insgesamt vermeiden.
Wenn Sie ein Assembler-Buch haben, müssen Sie Programmierer sein oder über Programmierkenntnisse verfügen. Ich weiß nicht, ob Ihre Frage eher von der Programmierseite oder vom digitalen Design stammt.
Wenn Sie von der Programmierseite kommen, würde ich zunächst Assembler für den msp430 und Arm oder Daumen lernen (spielen Sie noch nicht mit x86, es ist keine gute Architektur), vielleicht PIC (älter) pic, weder das dspic noch das pic32). Schreiben Sie dann einen Disassembler und / oder einen Befehlssatzsimulator. Wenn es sich nur um einen Dissassembler handelt, wählen Sie einen Befehlssatz mit nicht variabler Wortlänge wie ARM oder Daumen (ja, wenn Sie darüber nachdenken, können Sie diesen Verzweigungsbefehl verarbeiten) oder PIC. Schreiben Sie schließlich einen Befehlssatzsimulator, der mindestens ausreicht, um eine Handvoll Befehle und einen Zweig zu implementieren, und lassen Sie eine Schleife sehen, wie er ausgeführt wird. Dann lernen Sie Zustandsautomaten kennen und schreiben den Simulator mit Zustandsautomaten neu. Ich habe einen Befehlssatzsimulator, der nicht unbedingt vollständig auf einer Zustandsmaschine basiert, aber Ihnen möglicherweise das Gefühl dafür gibt, wovon ich spreche. Suche nach Thumbulator bei Github. Mein Benutzername ist dort dwelch67.
Wenn Sie sich dem aus Sicht eines Elektrotechnikers nähern, sollten Sie sich Opencores ansehen. Die Lesbarkeit und andere Merkmale des HDL mögen schwierig sein, aber es ist da draußen, um konsumiert zu werden. verilator und icarus verilog sind gute verilog simulatoren. Ich mag Verilator zum Teil, weil es beim Verilog-Parsing so starr ist und zweitens es super einfach ist, die C / C ++ - und HDL-Grenze zu überschreiten, um Software zu schreiben, um mit der zu simulierenden Hardware und anderen wiederverwendbaren Dingen zu kommunizieren. Es gibt eine winzige namens mcpu oder so ähnlich, auf die das Ganze auf einer Seite Papier passt, wenn sie gedruckt wird. Sie müssen sich wirklich darum kümmern, wie man ein Programm mit nur ein oder zwei realen Operationen schreibt (ich denke, es hat nur eine NOR). Wenn Sie Elektrotechniker sind und einen Crashkurs in Digital benötigen, sind die Transistoren immer gesättigt, im Grunde werden sie als elektrisch gesteuerte Schalter verwendet. Nehmen Sie ein Paar davon mit einigen Kabeln und anderen Komponenten, und Sie können UND- und ODER-Gatter herstellen, einen invertierenden Transistor hinzufügen und ein NICHT-Gatter erstellen, das NAND und NOR zulässt. Sie sollten sich mit Zustandsautomaten vertraut machen, wenn Sie dies noch nicht wissen.
Im Allgemeinen müssen Sie die grundlegende Logik UND, ODER, NICHT usw. verstehen. Erfahren Sie mehr über Zustandsautomaten, die entweder mit Software oder Hardware einwandfrei funktionieren ist das Konzept das gleiche. Zurücksetzen und Takten sind tatsächlich Teil des Lernens der Zustandsmaschine. Das Starten und Denken der Zustandsmaschine in Bezug auf jeden Durchlauf durch die Logik / den Code ist ein Taktzyklus in der CPU, und Sie geben bei jedem Durchgang Zustandsvariablen an, um anzugeben, was zu tun ist während dieses Taktzyklus, was ist der aktuelle Zustand und basierend auf dem aktuellen Zustand und gibt ein, was der nächste Zustand sein wird usw.