首页
社区
课程
招聘
求助 汇编写法 pushad popad
发表于: 2012-1-28 05:34 7587

求助 汇编写法 pushad popad

2012-1-28 05:34
7587
用这两个指令会不会影响其他子程序噢?

用 pushad popad 好    还是。。。

还是自己需要压或弹什么就写压或弹什么好

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
pushfd
pushad
。。。
popad
popfd

这样安全,不仅保存寄存器,还保存位。
2012-1-28 09:22
0
雪    币: 983
活跃值: (1186)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
不管用哪个,到代码执行完了,得把寄存器清零操作吧,比如中间如果用到eax后面得把这个寄存器清零。我每次都是这样做的,后面写入xor  eax,ea或者sub eax,eax
2012-1-28 09:55
0
雪    币: 180
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不知道你是否了解 pushad 和 popad 指令的意思。
pushad 相当于

push eax
push ecx
push edx
push ebx
push esp
push ebp
push esi
push edi


popad 相当于

pop edi
pop esi
pop ebp
pop esp
pop ebx
pop edx
pop ecx
pop eax


使用了这两条指令后(pushad 和 popad),在这两条指令中间进行的任何对寄存的修改都不会影响到这两条指令后面的指令。
不知道你想用它们做什么,如果是用到子程序中的话,你这个子程序不要用寄存器传递返回值。例如:子程序开始你用了pushad,然后你把子程序的返回值放到eax,popad时会把eax重写,这样你的返回值就可能是错误的。
2012-1-28 10:49
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
pushfd
顺序压入
{
  sf
  pf
  cf
  af
  df
  zf
  of
  

}
2012-1-28 15:31
0
游客
登录 | 注册 方可回帖
返回
//