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).

War es hilfreich?

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
scroll top