«Ошибка: операнд вне диапазона» при использовании ассемблера PPC - PullRequest
2 голосов
/ 27 июня 2011

У меня есть кросс-компилятор / ассемблер / компоновщик bulit gcc с 'powerpc-eabi' в качестве TARGET в окнах, использующих cygwin.При сборке я получаю следующую ошибку ....

code/sfiles/init_evh.s: Assembler messages:
code/sfiles/init_evh.s:381: Error: operand out of range (0x0000fffd is not between 0xffff8000 and 0x00007fff)

Но в этом номере строки есть следующая инструкция:

addi  r2,0,0xFFFD

Я использую следующую командудля сборки:

c:/cygwin/home/cdot/powerpc/bin/powerpc-eabi-as -mbig-endian -m603 -mregnames --
defsym _NDI_=1 --defsym _DBGR_ON_=1 --defsym DEBUG=1 --defsym _PARAM_DEBUG_=1 --
defsym _NIU_=1 -gdwarf-2 -I code/hfiles -o build/niu_ndi_dbgr_init_evh.o code/sf
iles/init_evh.s 2>build/niu_ndi_dbgr_init_evh.err

Я хотел бы знать, почему появляется вышеуказанная ошибка.

Пожалуйста, помогите в этом направлении.

1 Ответ

5 голосов
/ 27 июня 2011

Компилятор / ассемблер правильно отправил сообщение об ошибке здесь.Использование константы 0xfffd невозможно с инструкциями немедленного типа при сборке PPC.

Непосредственные инструкции PowerPC (например, addi, которые вы пытаетесь выполнить) имеют общий формат инструкции 6 /5/6/16 бит каждый для кода операции / источника / назначения / константы;16-битная константа подписана , следовательно, диапазон равен -32768 ... 32767;это знак расширенный до 32 бит, что означает, что вы получите диапазон 0xffff8000 ... 0x7fff.См. Также:

Введение в IBM Developerworks PPC Assembly , в частности "листинг 3".

Вот что пытается сообщить вам сообщение об ошибке.

...