2

我在使用 cygwin 的 Windows 中使用 'powerpc-eabi' 作为 TARGET 的 bulit 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

我正在使用以下命令进行组装:

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

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

请朝这个方向提供帮助。

4

1 回答 1

5

编译器/汇编器在此处发出错误消息是正确的。0xfffdPPC 汇编中的立即数指令不能使用常数。

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

IBM Developerworks PPC 组装介绍,特别是“清单 3”。

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

于 2011-06-27T09:03:47.747 回答