Assembly 混淆。对齐地址排列
我在看地址分配Assembly 混淆。对齐地址排列,assembly,dump,memory-alignment,Assembly,Dump,Memory Alignment,我在看地址分配 00010004 <arr>: 10004: 10080402 .word 0x10080402 10008: 20 .byte 0x20 00010009 <eoa>: 10009: 00 .byte 0x00 ... 0001000c <start>: ... 为什么eoa的地址从00010009开始。它应该从0001000d开始,对吗? 为什么从0001000c开始寻址内存,而不是从0001000d?eoa标签处的填充将由.ali
00010004 <arr>: 10004: 10080402 .word 0x10080402 10008: 20 .byte 0x20
00010009 <eoa>: 10009: 00 .byte 0x00 ...
0001000c <start>: ...
为什么eoa的地址从
00010009
开始。它应该从0001000d开始,对吗?
为什么从0001000c
开始寻址内存,而不是从0001000d
?eoa标签处的填充将由.align
指令开始
这意味着eoa标签本身只是跟随在00010009h结束的5字节数组
填充然后插入3个空字节,将开始标签的3个字节进一步置于0001000Ch
它应该从“0001000d”开始,对吗
我认为您相信.align
指令会在代码中插入固定数量的字节(00010005h+8=0001000Dh)。
然而,它所做的是插入一个计算出的填充字节数,以使下面的代码位于对齐的地址处
.section .text.ResetISR
.align
.global ResetISR
.type ResetISR, %function
ResetISR:
b start
arr:
.byte 2, 4, 8, 16, 32
eoa:
.align
start: ...