指令替换

有一个问题,怎么用其它指令实现push操作。

第一步看一下push操作具体干了什么事情。

查看intel指令手册

先让esp-4,然后把操作数写到[esp]这个地方。

第二步看影响的标志位。

手册说不影响标志位。

第一步是让esp-4,这个比较简单,lea esp,esp-4 lea指令不影响标志位。

然后mov [esp],var mov指令也不影响标志位

如果用sub esp,4这样行不行,行,但是影响标志寄存器。可以先把标志仅存器保存起来,sub执行完之后 再恢复标志寄存器的值,这样就相当于不影响标志寄存器了。

pushfd

sub esp,4

popfd

mov [esp],var 

这样也是可以的。

原文地址:https://www.cnblogs.com/yfish/p/15469380.html