Domanda

Se uso i nomi dei registri ottengo:

Error: illegal operands `add $t0,$zero,$zero'

Se uso numero di registro ($8 invece di $t0 e $0 invece di $zero) funziona. (Sto usando binutils 2,17).

È stato utile?

Soluzione

L'assemblatore GNU non supporta direttamente i nomi dei registri simbolici. Un approccio comune, se si utilizza gcc per guidare l'assemblatore è utilizzare l'estensione ".S" per il file sorgente assemblatore (che indica gcc per passare la sorgente attraverso il preprocessore C prima l'assemblatore) e # include un file di intestazione contenente definizioni come:

#define zero $0
#define v0   $2
#define v1   $3

Poi la sorgente assembler può avere dichiarazioni come

add v0, zero, zero
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top