Ich lese gerade das Buch Die Elemente von Computersystemen: Aufbau eines modernen Computers aus ersten Prinzipien , das Projekte umfasst, die den Aufbau eines Computers von Booleschen Gattern bis hin zu Anwendungen auf hoher Ebene (in dieser Reihenfolge) umfassen. Das aktuelle Projekt, an dem ich arbeite, besteht darin, einen Assembler in einer Sprache meiner Wahl zu schreiben, der vom Hack-Assembly-Code in den Hack-Maschinencode übersetzt (Hack ist der Name der Hardware-Plattform, die in den vorherigen Kapiteln erstellt wurde). Obwohl die Hardware alle in einen Simulator eingebaut wurde, habe ich versucht vorzutäuschen, dass ich wirklich jede Ebene mit nur den Werkzeugen konstruiere, die mir zu diesem Zeitpunkt im realen Prozess zur Verfügung stehen.
Das heißt, es hat mich zum Nachdenken gebracht. Die Verwendung einer höheren Programmiersprache zum Schreiben meines Assemblers ist sicherlich praktisch, aber für den allerersten Assembler, der jemals geschrieben wurde (dh in der Geschichte), müsste er nicht in Maschinencode geschrieben werden, da dies alles war, was zu dieser Zeit existierte?
Und eine korrelierte Frage ... wie wäre es mit heute? Wie würde der Assembler aufgebaut sein, wenn eine brandneue CPU-Architektur mit einem brandneuen Befehlssatz und einer brandneuen Assemblersyntax herauskommen würde? Ich gehe davon aus, dass Sie weiterhin eine vorhandene Hochsprache verwenden könnten, um Binärdateien für das Assembler-Programm zu generieren. Wenn Sie die Syntax sowohl der Assembler- als auch der Maschinensprache für Ihre neue Plattform kennen, ist die Aufgabe, den Assembler zu schreiben, eigentlich nur eine Textanalyse-Aufgabe und ist nicht inhärent mit dieser Plattform verbunden (dh muss in der Maschinensprache dieser Plattform geschrieben sein). Dies ist der Grund, warum ich in der Lage bin, beim Schreiben meines Hack-Assemblers im Jahr 2012 zu "schummeln" und einige bereits vorhandene zu verwenden Hochsprache, um mir zu helfen.