我正在尝试编译嵌入式 C 代码,但发生小数据区溢出。我知道这是什么意思,但我不知道如何解决它。任何人都可以提出建议吗?
所以,问题是 r13 寄存器是 sda 的基指针,它是 16 位长。它是有符号的,因此它指向 sda 的中间,它可以用作偏移量来获取给定的变量值。
如果一个变量被 #pragma ghs startsda 告知要放入 sda,那么它将由 sda_base+r13 寻址,如果该变量位于该基址+寄存器偏移量无法寻址的地址,则报告 sda 溢出。
如何找到导致溢出的原因?如果我没有地图文件,但我不知道变量地址。