Грешка: операнд извън обхвата при използване на PPC асемблер

Имам изграден gcc кръстосан компилатор/асемблер/линкер с „powerpc-eabi“ като TARGET в Windows, използвайки 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

Бих искал да знам защо се появява горната грешка.

Моля за помощ в тази посока.


person thulasi    schedule 27.06.2011    source източник
comment
Вие ли написахте инструкцията или тя беше генерирана от компилатора? Защото, ако сте го написали, трябва просто да го промените (предполагайки от съобщението за грешка, предполагам, че ще приеме 0xfffffffd и ще вземе по-долните два байта така или иначе), докато ако е генерирано от компилатора, това би било грешка и трябва да го докладвате към gcc инструмент за проследяване на грешки.   -  person Jan Hudec    schedule 27.06.2011


Отговори (1)


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

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

Въведение в асемблирането на PPC на IBM Developerworks, особено "списък 3."

Това се опитва да ви каже съобщението за грешка.

person FrankH.    schedule 27.06.2011