Est-il possible d'utiliser des noms de registre MIPS avec GAS (assembleur GNU)?
Question
Si j'utilise des noms de registre je reçois:
Error: illegal operands `add $t0,$zero,$zero'
Si j'utilise le numéro de registre (de $8
au lieu de $t0
et $0
au lieu de $zero
) cela fonctionne.
(J'utilise binutils 2.17).
La solution
L'assembleur GNU ne supporte pas les noms de registre symboliques directement. Une approche commune, si l'on utilise gcc pour entraîner l'assembleur, est d'utiliser l'extension « .S » pour le fichier source assembleur (qui indique gcc passer la source par l'intermédiaire du préprocesseur C avant l'assembleur) et #include un fichier d'en-tête contenant les définitions comme:
#define zero $0
#define v0 $2
#define v1 $3
Ensuite, la source assembleur peut avoir des déclarations comme
add v0, zero, zero
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow