E 'possibile utilizzare i nomi di registro MIPS con GAS (GNU assembler)?
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).
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