Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 混淆。对齐地址排列_Assembly_Dump_Memory Alignment - Fatal编程技术网

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: ...