原创 关于KEIL编译内存溢出的问题

2009-4-21 12:53 5715 5 5 分类: MCU/ 嵌入式

关于KEIL编译内存溢出的问题(2007-03-28 08:47:34)



http://topic.csdn.net/t/20050412/17/3930465.html


排开Keil编译器有问题,可以肯定是你的内存空间溢出了  
   
  Keil   中关于   107   错误的描述是这样的:  
   
  =========================================  
  Error   L107   (ADDRESS   SPACE   OVERFLOW)  
   
  Summary       ***   Error   L107  
          ADDRESS   SPACE   OVERFLOW  
          SPACE:   space-name  
          SEGMENT:   segment-name  
  Description       The   specified   segment   cannot   be   located   at   the   specified   address   space.   The   segment   is   ignored.      
  =========================================  
   
  如果你仍要坚持自己的观点,只能去问   keil   公司的  
   
   
  前面有些兄弟的说法有二点是不确切的:  
  ①就是超过变量128后必须使用compact模式编译  
          实际的情况是只要编译指示data=xxx   不超过   256.0   就可以用   small   编译  
  ②128以上的某些地址为特殊寄存器使用,不能给程序用  
          特殊寄存器虽然使用重复的地址,但是用不同的指令访问,并不会占用RAM空间  
   
   
  但   small   模式下未指存储类型的变量默认为data型,即直接寻址,只能访问低   128   个字节,但这   128   个字节也不是全为你程序所有,寄存器   R0-R7必须映射到低RAM,要占去   8   个字节,如果使用寄存组切换,占用的更多。  
   
  所以你可以使用   data   区最大为   120   字节,超出   120   个字节则必须用   idata   显示的指定为间接寻址,另外堆栈至少要占用一个字节,所以你最多能使用   127   上字节(如果)  
   
  就是说极限情况下你可以定义的变量可占   247   个字节  

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /2 下一条