Ist es möglich, MIPS Registernamen mit GAS (GNU Assembler) zu benutzen?
Frage
Wenn ich Registernamen verwenden, erhalte ich:
Error: illegal operands `add $t0,$zero,$zero'
Wenn ich registrieren verwenden Nummer ($8
statt $t0
und $0
statt $zero
) es funktioniert.
(Ich verwende binutils 2.17).
Lösung
Der GNU Assembler unterstützt keine symbolischen Registernamen direkt. Ein üblicher Ansatz, wenn gcc mit dem Assembler zu fahren, ist die „.S“ Erweiterung für die Assembler-Quelldatei zu verwenden (die gcc erzählt die Quelle durch den C-Vorprozessor vor dem Assembler passieren) und eine Header-Datei enthält Definitionen #include wie:
#define zero $0
#define v0 $2
#define v1 $3
Dann kann der Assembler Aussagen wie haben
add v0, zero, zero
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow