assembly push dword ptr [eax+22]是什么意思?

ztigrdn8  于 2023-04-30  发布在  其他
关注(0)|答案(2)|浏览(138)

我知道E。例如,推送Eax将将Eax保存到堆栈并将ESP递减4。而push dword ptr意味着它需要推送4个字节,但我很困惑。如果它是[esi+22],这会是同样的事情吗?

7qhs6swi

7qhs6swi1#

push指令与许多其他x86指令非常相似,可以接受各种操作数:立即值、寄存器和存储器地址:

push 10                 ; pushes the value 10 (32 bits in 32-bit mode)
push eax                ; pushes the contents of the 32-bit register eax
push DWORD [ebx + 42]   ; pushes 32 bits from the memory location ebx + 42

寄存器表单从寄存器的大小推断大小。内存形式需要具有指定的大小(例如例如,这里以Intel语法示出)。对于立即值,操作数大小为16位或32位;当前模式是默认的,并且可以明确地选择其它尺寸(例如,例如32位模式下的push WORD 10)。

1tuwyuhd

1tuwyuhd2#

push dword ptr [eax+22]esp递减4,然后从存储器位置eax + 22保存4字节的数据。pop eax以相反的方式执行,它首先将存储在esp中的位移动到esp + 3,从而移动到eax,并将esp递增4。

相关问题