我知道callret会修改esp的值,并且pushpop有许多变体,但是还有其他指令会影响堆栈指针吗?

最佳答案

以下说明修改了堆栈指针1:


call
enter
int n/into/int 3
iret/iretd
leave
pop
push
ret
sysenter
sysexit
pusha/pushad
popa/popad
pushf/pushfd/pushfq
popf/popfd/popfq
vmlaunch/vmresume
eexit


我把把主要的副作用和副作用分开的负担留给了你。

请记住,任何能够生成异常的指令都可能会修改堆栈指针。
为了避免使您的问题变得琐碎,我没有考虑过此类说明。

这些都是在创建此答案时可以通过搜索英特尔手册找到的所有说明。
当我尽力检查手册时,我不会对那个清单发誓。



1 SPESPRSP

关于assembly - 有哪些x86指令会影响ESP的副作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44144038/

10-11 15:43