gpt4 book ai didi

c - 0x4 在 "movl $0x2d, 0x4(%esp)"中做什么?

转载 作者:太空狗 更新时间:2023-10-29 16:46:30 25 4
gpt4 key购买 nike

我正在研究 GCC 生成的汇编代码。但是我不明白:

movl $0x2d, 0x4(%esp)

在第二个操作数中,0x4 代表什么?偏移地址?寄存器EAX有什么用?

最佳答案

movl $0x2d, 0x4(%esp)表示取栈指针当前值(%esp),加4(0x4) 然后将长(32 位)值 0x2d 存储到该位置。

eax 寄存器是通用 32 位寄存器之一。 x86 架构指定了以下 32 位寄存器:

eax  Accumulator Register
ebx Base Register
ecx Counter Register
edx Data Register
esi Source Index
edi Destination Index
ebp Base Pointer
esp Stack Pointer

其中一些的名称和用途可以追溯到 Intel 8080 时代。

This page很好地概述了 Intel 类型的寄存器。上面列表中的前四个也可以作为 16 位或两个 8 位值访问。例如:

3322222222221111111111
10987654321098765432109876543210
<- eax ->
<- ax ->
<- ah -><- al ->

指针和索引寄存器不允许使用 8 位部分,但您可以使用 16 位的 bp

关于c - 0x4 在 "movl $0x2d, 0x4(%esp)"中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2386684/

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