首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Near与Far的问题

Near与Far的问题

HC08中,使用CodeWarrior5.0的创建项目向导


在创建项目时选择memory mode为tiny时,定义变量为far时使用长寻址,定义变量时用near或不用则按照短寻址。如unsigned char tmp/unsigned char near tmp/unsigned char far tmp;这三种方式均可编译通过,且使用时根据near/far使用相应的优化方式。


但若memory mode为small时,不能使用near关键字,否则编译失败。使用


#pragma DATA_SEG Z_RAM
unsigned char tmp;
#pragma DATA_SEG DEFAULT


之后虽编译通过,且将tmp放在Z_RAM段,但使用tmp变量时无任何优化,与其他变量操作无异。


各位可有这方面的经验或解决方法?


 


附:以tmp++为例,在tiny模式下near方式编译结果为:


   23:      tmp++;
  0005 3c00     [4]             INC   tmp


其他方式编译结果无优化,结果如下


   21:      tmp++;
  0001 450000   [3]             LDHX  @tmp
  0004 7c       [3]             INC   ,X


 


 边凿磨边用
 
 经验同分享
memory mode 为far时,若指定变量地址亦可能带来优化,如
unsigned char tmp @0x0080;

26: tmp++;
0003 3c00 [4] INC tmp

 边凿磨边用
 
 经验同分享
返回列表