我使用cygwin在windows中使用'powerpc-eabi'作为TARGET来构建gcc交叉编译器/汇编器/链接器。组装时,我收到以下错误....
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
我正在使用follwing命令进行汇编:
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
我想知道为什么出现上述错误。
请朝这个方向帮忙。
答案 0 :(得分:5)
编译器/汇编器在此处发出错误消息是正确的。在PPC汇编中使用立即类型指令无法使用常量0xfffd
。
PowerPC立即指令(例如您尝试执行的addi
)具有通用指令格式,每个指令格式为6/5/6/16位,用于操作码/源/目标/常量; 16位常数签名,因此范围为-32768 ... 32767
;这是符号扩展到32位,这意味着您将获得0xffff8000 ... 0x7fff
的范围。另见:
IBM Developerworks PPC Assembly Introduction,特别是“列表3”。
这就是错误消息试图告诉你的内容。