|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 cjsb37 于 2013-4-29 09:10 编辑
link的时候,试图将.data section或自己定义的初始化数据段(比如.sect "coef" link到30000h地址上去,但linker报错,信息如下:
<Linking>
>> error: relocation overflow occured at address 0x00000037 in TEXT section
'.text' of input file
'D:\user\anzp\DDSPC16\DDSPC16\CCS\test\Debug\test.obj'. The 17-bit
relocated address 0x1a100 is too large to encode in the 16-bit
signed field. You may need to add a mask to the assembly
instruction or use other target specific assembly features if you
really only need the lowest 16 bits of this symbol. Please see the
section on Relocation in the Assembly User's Guide.
(注:我的工程名是test)
我不能完全明白上述error信息想要传达的意义,但是很明显这些全局变量段只能放到0-FFFF(字地址)上。另外我也知道C55的程序和数据总线都为24位(当然数据总线实际为23位),可error 信息里面又为什么提到指令中16位的分支编码呢?
请问,这是为什么,又如何解决呢?谢谢!
PS:我在程序中把.data段的首地址指针用amov指令放入一个辅助地址寄存器,或许是这个原因。但是link却对.bss段没有这个限制阿。
code里面是这么写的:
.data
IN_DATA int 1,2,3, 4
.bss OUT_DATA, 4
.text
AMOV #IN_DATA, XAR0
AMOV #OUT_DATA,XAR1
难道c55的linker对初始化的全局变量有这方面的限制?谢谢!
|
|