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