Можно ли использовать имена регистров MIPS с GAS (ассемблер GNU)?
Вопрос
Если я использую имена регистров, я получаю:
Error: illegal operands `add $t0,$zero,$zero'
Если я использую номер реестра ($8
вместо $t0
и $0
вместо $zero
) оно работает.(Я использую binutils 2.17).
Решение
Ассемблер GNU не поддерживает напрямую символические имена регистров.Общий подход при использовании gcc для управления ассемблером заключается в использовании расширения «.S» для исходного файла ассемблера (которое сообщает gcc о необходимости передать исходный код через препроцессор C перед ассемблером) и #include заголовочный файл, содержащий определения. нравиться:
#define zero $0
#define v0 $2
#define v1 $3
Тогда исходный код ассемблера может содержать такие утверждения, как
add v0, zero, zero
Не связан с StackOverflow