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

thu*_*asi 2 assembly gcc powerpc inline-assembly

我使用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)
Run Code Online (Sandbox Code Playgroud)

但是,在该行号中,存在以下指令:

addi  r2,0,0xFFFD
Run Code Online (Sandbox Code Playgroud)

我使用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
Run Code Online (Sandbox Code Playgroud)

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

请帮助这个方向.

Fra*_*kH. 5

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

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

IBM Developerworks PPC Assembly简介,特别是"列表3".

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