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

Était-ce utile?

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