KEIL L107 ADDRESS SPACE OVER

作       者:武力戡乱

修改日期:2017-09-13

备       注:

1、总备注信息

2、联系方式

3、其它博文链接:武力戡乱博客目录总表

4、转载地址:http://blog.sina.com.cn/s/blog_446cfdc60100zb0q.html

内       容:

Memory Model: small 模式下未指存储类型的变量默认为data型,即直接寻址,只能访问低 128 个字节,但这 128 个字节也不是全为你程序所有,寄存器 R0-R7必须映射到低RAM,要占去 8 个字节,如果使用寄存组切换,占用的更多。
所以你可以使用 data 区最大为 120 字节,超出 120 个字节则必须用 idata 显示的指定为间接寻址,另外堆栈至少要占用一个字节,所以你最多能使用 127 上字节(如果)
有个简单的方法就是打开你的输出文件夹中的 .M51 符号表文件,查找哪些变量被移到了 xdata,然后修改你的程序,在这些变量前加上 idata,再编译看看,或直接把某些变量定义为idata型。

另外,对 idata 的定义的变量最好放在 data 变量之后
对于这一种定义
uchar c1;
idata uchar c2;
uchar c3;
变量 c2 肯定会以间接寻址,但它有可以落在 data 区域,就浪费了一个可直接寻址的空间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值