使用PPC汇编程序时“错误:操作数超出范围”

时间:2011-06-27 08:40:47

标签: gcc assembly inline-assembly powerpc

我使用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

我想知道为什么出现上述错误。

请朝这个方向帮忙。

1 个答案:

答案 0 :(得分:5)

编译器/汇编器在此处发出错误消息是正确的。在PPC汇编中使用立即类型指令无法使用常量0xfffd

PowerPC立即指令(例如您尝试执行的addi)具有通用指令格式,每个指令格式为6/5/6/16位,用于操作码/源/目标/常量; 16位常数签名,因此范围为-32768 ... 32767;这是符号扩展到32位,这意味着您将获得0xffff8000 ... 0x7fff的范围。另见:

IBM Developerworks PPC Assembly Introduction,特别是“列表3”。

这就是错误消息试图告诉你的内容。