.lkf中 +seg .data -b 0x100 -m 0x100 -n .data +seg .bss -a .data -n .bss
意思是.data (初始化了的&分配到0页以外的变量)从0X100开始(-b 0x100),最大长度为0X100(-m 0x100 ,即到0X200) .bss((没有初始化的&分配到0页以外的变量)跟在.data后面(-a .data )长度在.data规定的地址范围之内
你报的错:segment .bss size overflow (1),所以,你可以把-m 0x100改大一点,比如-m 0x130.
同时要注意这么做的风险: 你的STACK的可用范围变小了(从0x200~0x3FF 变成c从0x230到0x3FF). 但你如果没有中断嵌套以及没有很深的程序嵌套以及没有在一个函数内部有超多的变量或函数参数,(这些都是要占用堆栈的),就没事
同时从你的.MAP中,可以看到, start 00000009 end 0000005e length 85 segment .ubsct start 00005e:0 end 000063:5 length 45 segment .bit, initialized 在0xff以内,0x64~0xff是没有分配变量的,如果还有变量需要分配,可以放在这里.
|