我知道call
和ret
会修改esp
的值,并且push
和pop
有许多变体,但是还有其他指令会影响堆栈指针吗?
最佳答案
以下说明修改了堆栈指针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 SP
,ESP
或RSP
。
关于assembly - 有哪些x86指令会影响ESP的副作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44144038/