gpt4 book ai didi

assembly - 令人困惑的 .align 地址排列

转载 作者:行者123 更新时间:2023-12-01 13:32:10 25 4
gpt4 key购买 nike

我正在查看地址分配。

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 开始,对吧?
为什么 start0001000c 而不是从 0001000d 寻址内存?

最佳答案

eoa 标签将通过 .align 指令开始进行填充。
这意味着 eoa 标签本身只是跟在以 00010009h 结束的 5 字节数组之后。

填充然后插入 3 个空字节,将 start 标签在 0001000Ch 处进一步放置 3 个字节。


It should be starting from "0001000d" right?

我认为您相信 .align 指令会在代码中插入固定数量的字节 (00010005h + 8 = 0001000Dh)。
然而,它所做的是插入计算出的填充字节数以使以下代码位于对齐的地址。

关于assembly - 令人困惑的 .align 地址排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45388506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com