2009-04-06 7 views
1

Если я использую регистрации имен я получаю:Возможно ли использовать имена регистров MIPS с GAS (сборщик GNU)?

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

Если я использую номер регистра ($8 вместо $t0 и $0 вместо $zero) он работает. (я использую binutils 2.17).

+0

Binutils 2.18 и более поздние поддерживает символические имена регистров. –

ответ

2

Ассемблер GNU не поддерживает имена символьных имен напрямую. Общий подход при использовании gcc для управления ассемблером заключается в использовании расширения «.S» для исходного файла ассемблера (который сообщает gcc передать источник через препроцессор C перед ассемблером) и # включить заголовочный файл, содержащий определения как:

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

Тогда источник ассемблера может иметь такие заявления

add v0, zero, zero 
+0

Незначительный приговор: 'v0' и' v1' '' $ 2' и '$ 3' (' $ 1' '' ''! –

+0

Вы правы - это то, что я получаю за доверие к моей памяти, исправят. –

+0

Обратите внимание, что заголовок может быть уже частью вашей системы. Найдите файл, например '/ usr/include/sys/reg.h' или'/usr/include/mips-linux-gnu/sys/regdef.h'. –