【发布时间】:2021-04-21 10:14:12
【问题描述】:
- 在 x86 架构(比如 32 位)中,地址是否只指向一个字节?意思是,如果我们查看地址 0x0000 0000 0000 FFFF 是不是只有一个字节?我认为答案是肯定的,但需要确认
-
我想知道这条指令的值是如何存储的,
movl %eax, -4(%rbp)。我的理解是我们将堆栈中的值放在基指针的较低地址。由于 eax 是 32 位,当我们进行操作时,它实际上是如何显示在堆栈上的?意思是,如果eax有0x0a0b0c0d,并且使用小端序是这个吗?
rbp[-4] 0d ; low byte at given address
rbp[-3] 0c
rbp[-2] 0b
rbp[-1] 0a ; dword ending here
还是这个?
rbp[-7] 0d
rbp[-6] 0c
rbp[-5] 0b
rbp[-4] 0a ; high byte at given address, dword ending here
或 其他的,因为我不明白?任何帮助都会很棒
【问题讨论】:
-
别想太多。加载和存储总是从多字节内存数据的最低(数字)地址计算和工作。向下增长的堆栈不会改变这一点。负位移寻址不会改变这一点。
标签: assembly x86 stack cpu-architecture memory-address