指令替换
有一个问题,怎么用其它指令实现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
这样也是可以的。