|
发表于 2005-3-8 09:15:16
|
显示全部楼层
我使用ICC 6.30,使用绝对寻址。
代码:unsigned int crc= *((const unsigned int *)(0xf189));
读出的是0xffff。看汇编代码
+0000F175: E8E9 LDI R30,0x89 Load immediate
+0000F176: EFF1 LDI R31,0xF1 Load immediate
+0000F177: 90A7 ELPM R10,Z+ Extended load program memory
而且RAMPZ 是0x01。
别外我设了一个全局常量,结果常量被放在BOOT区外。
const unsigned int kkkk=0x1911;
unsigned int crc = kkkk;
编译后:
+0000F169: EAEC LDI R30,0xAC Load immediate
+0000F16A: EEF0 LDI R31,0xE0 Load immediate
+0000F16B: 90A7 ELPM R10,Z+ Extended load program memory and postincrement
+0000F16C: 90B6 ELPM R11,Z Extended load program memory
常量被放在了0xe0ac。虽然不在BOOT区了,我的BOOT区是4k,是从0xf000开始。 |
|