Tritus.Rocks

Tuning

Maschinensprache

Wann gehts denn endlich zur Sache°

Maschinensprache ist nicht nur Nullen und Einsen. Die Darstellung im MONITOR gibt es in drei unterschiedlich lesbaren Arten, die alle inhaltlich dasselbe zeigen, dieselben Nullen und Einsen einer Prozessorfunktion, wer das unbedingt so sehn will.

Opcode Ausgesprochen, wie es da steht, ist der Bytecode in Hexadezimal - 0a, a2, 9d, 8e, cd, 29, 09, ed sind Opcodes. Es ist zunächst schwer zu glauben, dass das die einfachste Art Maschinensprache sowohl zu lesen als auch zu schreiben sein soll, denn allzuleicht wirken diese Hexadezimalzahlen am Anfang echt einschüchternd, aber bevor sich bei falscher Handhabung des MONITOR alles vollkommen unverständlich in sinnfreien Mnemonics verwurschtelt, ist diese Ansicht tatsächlich sehr gut lesbar. Es gibt allerdings etwa 150 dokumentierte Opcodes und 256 mögliche Hexadezimalzahlen für ein Byte, das wird nicht immer sofort klar. Was sind überhaupt Hexadezimalzahlen?

Mnemonic Ausgesprochen Nimoynic nach Mr. Spock vom Raumschiff Enterprise ist eine Übersetzung in Direktassembler. Lda, ldx, sta, stx, cmp, and, ora, sbc sind nach diesen Beispielen Mnemonics. Mnemonics fassen bestimmte Opcodes in Gruppen zusammen, zum Beispiel fangen dann alle Ladebefehle mit L an, und es gibt schon acht verschiedene Opcodes für das einzige Mnemonic lda - Load Accumulator - je nach Anwendungsart. Assembler ist eigentlich eine strukturierte Programmiersprache, die erst aus einer Datei, dem Sourcecode, in ein lauffähiges Programm umgewandelt werden muss. Die Programmiersprache Assembler ist dabei so maschinennah, dass sie mit Einschränkungen direkt zur Darstellung von Bytecode verwendet werden kann. Das ist mitunter eine große Erleichterung in der Lesbarkeit und dem Verständnis von Maschinensprache. Mnemonics können aber auch extrem verwirrend, unübersichtlich und sogar komplett undurchsichtig sein. Deshalb der Vergleich mit Mr. Spock, reine Logik hilft ungemein einen richtigen Einstieg in den Code zu finden, und damit wird das ganze plötzlich sehr einfach. Dieser Einstieg ist nicht immer ganz klar. Assembler Listings sind erfahrungsgemäß auch sehr sehr lang. Ein hoher Preis, aber auch ein gutes Werkzeug.

PETSCII Ausgesprochen wie Wintersport mit Kuscheltieren, sind einfach die Zeichen eines Commodore Zeichensatzes, und zwar gibt es genau 256 Zeichen in einem Zeichensatz, ein Byte kann dabei genau 256 Werte haben. Willkommen in der Matrix! Ich könnte jetzt einfach eine Reihe sinnloser Zeichen schreiben, PETSCII ist am PC nicht verfügbar. Vergleichbar ist ASCII, hier wäre also irgendein Zeichensalat zu sehen. Für jedes einzelne Byte steht genau ein Zeichen. So kann jeder Code und alle Daten einfach als eine Reihe von Zeichen dargestellt werden. Diese Darstellung ist sehr kompakt und maximal platzsparend, das Coden geht am direktesten und ist am schnellsten, der Code ist sofort ausführbar ohne besondere Hilfsmittel, denn jede Textdatei kann ein ausführbares Programm sein, da wir ja im Text nur eine Reihe von Bytecodes haben. Nachteil ist, nicht alle Zeichen sind gut zu unterscheiden und gleichschnell auf der Tastatur erreichbar, was schnell frustrierend werden kann.

Alle drei Lesarten vereinen sich und ergänzen sich zu einem stimmigen Gesamtkonzept. Und weil sie denselben Inhalt nur auf unterschiedliche Weise darstellen, ist es ok eine individuelle Vorliebe zu haben ohne andere Perspektiven zu benachteiligen.

Der folgende Text bezieht sich vor allem auf Opcodes und Hexbytes aber geht auch ein bisschen auf Assembler ein um die allgemeine Kommunikation zu erleichtern.

Aber der Reihe nach, natürlich lässt sich Maschinensprache auch binär darstellen. Die direkte Schaltung von Programmen ist nicht so relevant, weil wir ja eine virtualisierte Maschine haben, aber für logische Operationen kann es hilfreich sein Binärzahlen richtig verstehen zu lernen. Für das Verständnis von Bytes brauchen wir achtstellige Binärzahlen.

Ein Byte hat acht Bit, das ist sicher bekannt.

Null ist eine Zahl

Ich schlage also vor, gleich bei Null anzufangen.