Warum belegen einige Befehle im Hauptspeicher 16 Bit, andere dagegen 32-Bit?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Einige Befehle sind halt so umfangreich, das sie mit einem Byte nicht mehr auskommen. Diese belegen daher 2 Bytes.


AchSo774 
Beitragsersteller
 13.03.2023, 08:48

Ja, Aber warum sind einige Befehle umfangreich und einige nicht ? Wovon hängt das ab ? Spielt der Art der Operanden eine Rolle ??

naaman  13.03.2023, 08:55
@AchSo774

Zum Beispiel:

Wird mit Ganzzahlen (Integerzahlen) gerechnet, ist der Aufwand dafür eher gering. Wird hingegen mit Kommazahlen gearbeitet, ist der Rechenaufwand um ein vielfaches höher. Stell dir vor, der Rechner soll 3+5 berechnen und stell dir weiter vor, er soll 543,98765491 + 1835,87378531 berechnen.

Der Befehl selbst muss doch auch gespeichert werden. Referenziert er eine weitere, wie es bei den 4 32-bit langen Befehlen der Fall ist, wird auch die zweite geblockt für diesen Befehl.

Du kennst das von Windows vielleicht:

Es gibt hübsche Fehlermeldungen, wenn ein Programm im Speicherbereich eines anderen herumwuselt.


AchSo774 
Beitragsersteller
 13.03.2023, 08:49

Ja, Aber warum sind einige Befehle umfangreich und einige nicht ? Wovon hängt das ab ? Spielt der Art der Operanden eine Rolle ??

Bei diesem Prozessor ist offenbar ein Befehls- bzw. ein Datenwort 16 Bit breit.

Einen "einfachen" Befehl (z.B. MOV R1,R2) bekommt man in 16 Bit ohne weiteres untergebracht.

Aber bei solchen Befehlen, die einen 16-Bit-Operanden haben, wird der Befehl auf jeden Fall insgesamt länger als 16 Bit, da ja der eigentlich Opcode auch irgendwo untergebracht werden muss. Bei diesem Prozessor verwendet man dann zwei Worte zu je 16 Bit.

Es gibt verschiedene Wege, mit diesem Problem umzugehen. Einem 16-Bit-Opcode eventuell ein 16-Bit-Operand folgen zu lassen, ist nur einer davon.