指令替换

有一个问题,怎么用其它指令实现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 

这样也是可以的。

 

posted @ 2021-10-27 10:33  eatwhat  阅读(78)  评论(0编辑  收藏  举报