我知道例如push eax会将eax保存到堆栈并且esp递减4. push dword ptr意味着它需要推送4个字节,但是然后我感到困惑。另外,如果它是[esi + 22]这是否是同样的事情?push dword ptr [eax + 22]是什么意思?
0
A
回答
5
的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
寄存器形式从寄存器的大小推断大小。内存形式需要指定大小(例如,这里以英特尔语法显示)。对于即时值,操作数大小为16或32位;当前模式是默认模式,另一个大小可以明确选择(例如,在32位模式下为push WORD 10
)。
0
push dword ptr [eax+22]
会减少esp
4,然后从内存位置ebx + 22
保存4bytes数据。 和pop eax
做一个反向的方式,首先移动在esp
storeed到esp + 3
到eax
位,和4
相关问题
- 1. `dword ptr`是什么意思?
- 2. cmp DWORD PTR和mov DWORD PTR是什么意思?
- 3. mov eax,dword ptr [eax]是做什么的?
- 4. mov dword ptr [rsp],eax ss:00000000`0011ddc0 = 00000060是什么意思?
- 5. eax在mov后有什么eax,dword ptr [edi]
- 6. mov 0x40(%eax),%eax是什么意思?
- 7. 这个dissasembly是什么意思?
- 8. dword ptr和dword ptr之间的区别:es
- 9. 在装配中strcpy是什么意思?
- 10. 指令是什么LODS DWORD PTR DS:[ESI]?
- 11. “ptr = ptr - > next”这是什么“ - >”是什么意思? (C++)
- 12. movl $ _start,%eax是什么意思?
- 13. “mov eax,dword ptr fs:loc_12 + 6”哪个值已分配给eax?
- 14. 这条ASM线是什么意思?
- 15. 什么是leal(%edx,%edx,4),%eax是什么意思?
- 16. <[email protected]>是什么意思?
- 17. C指针的“**&ptr”和“2 ** ptr”是什么意思?
- 18. git push origin HEAD是什么意思?
- 19. git push -u是什么意思?
- 20. FSTP DWORD PTR DS:[ESI + 1224]做什么?
- 21. fs:[register + value]是什么意思汇编?
- 22. ptr =&a和* ptr =意思是否一样?
- 23. 是什么意思:是什么意思?
- 24. 在功能序言中,“PUSH 0xFFFFFFFF”是什么意思?
- 25. 什么是空array.slice(0).push(任何)是什么意思?
- 26. MOV EAX,DWORD PTR SS的含义是什么:[EBP + 8h]以及如何将它转换为AT&T格式?
- 27. “nop dword ptr [rax + rax]”x64汇编指令是做什么的?
- 28. 是什么PTR sub_xxxxx意味着
- 29. DWORD,LPTSR,LPBYTE,HANDLE这些术语是什么意思?
- 30. C中的声明'(int *)ptr [N]'是什么意思?
这是快速,由于Kerrek增加
esp
。我能问一下,基于最后一条指令是否正确,读者不知道它是否指向ebp +或ebp-? – Soap对不起,我不太明白这个问题 - 谁是“它”? “读者”是什么意思?阅读源代码或检查堆栈? –
(并且请将评论添加到答案 - 这样我得到一个通知,这次我只是偶然看到你的评论,或者添加'@name'标记) –