Ich habe eine Verständnisfrage zu einem Assembler-Befehl aus dem R32C
Befehlssatz. Der Code lautet:
Die Bytefolge davon ist:
MOV.L bedeutet ja eine Schreiboperation mit einem Long-Word. Die Syntax
ist immer Quelle, Ziel. In diesem Fall ist die Quelle ein
Immediate-Value, erkennbar am "#" mit dem Wert "-1", das Ziel die durch
"dword_47228" adressierte Speicherstelle 0x47228.
Es wird also wohl der Wert -1 in Form eines 4-Byte Wertes and diese
Speicherstelle geschrieben.
Es gibt eine große Anzahl von Adressierungsarten beim MOV-Befehl. Über
den Hex-Code der Anweisung FE EB (0b11111110 11101011) meine ich die
Variante "MOV.size:Q #IMM:4,dest" vorliegen zu haben (R32C Software
Manual, Page 259).
Ein #IMM:4 ist dann demnach ein 4-Bit Wert welcher im obigen Fall 0b1111
ist. "dest" hat in der Anweisung den Wert 0b01011 was damit dsp:24
bedeutet. Die Adresse folgt dann mit 3 Bytes (=24 Bits) im Little-Endian
Stil: 28 72 04 = 047228.
Was bedeutet aber #-1 als Wert im Endeffekt? Was würde an der
angegebenen Speicheradresse stehen? Wäre das ein vorzeichenbehafteter
Integer int32, wäre -1 doch 0b10000000 00000000 00000000 00000001?