Board logo

标题: Near与Far的问题 [打印本页]

作者: guantingwei    时间: 2006-6-6 10:05     标题: 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


 


作者: guantingwei    时间: 2006-6-6 10:18

memory mode 为far时,若指定变量地址亦可能带来优化,如
unsigned char tmp @0x0080;

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




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0