我在看地址分配。
00010004 <arr>: 10004: 10080402 .word 0x10080402 10008: 20 .byte 0x20
00010009 <eoa>: 10009: 00 .byte 0x00 ...
0001000c <start>: ...守则的汇编部分:
.section .text.ResetISR
.align
.global ResetISR
.type ResetISR, %function
ResetISR:
b start
arr:
.byte 2, 4, 8, 16, 32
eoa:
.align
start: ...为什么eoa的地址从00010009开始。应该是从0001000d开始的,对吧?
为什么开始从0001000c而不是从0001000d来寻址内存
发布于 2017-07-29 11:18:40
在eoa标签上,由.align指令启动的填充。
这意味着eoa标签本身只是跟随以00010009h结尾的5个字节数组。
填充然后插入3个空字节,将开始标签进一步放置在0001000Ch。
应该从“0001000天”开始,对吧?
我认为您认为.align指令在代码中插入了固定数量的字节(00010005h +8= 0001000Dh)。
但是,它所做的是插入计算出的填充字节数,使在对齐地址上跟随代码。
https://stackoverflow.com/questions/45388506
复制相似问题