首页
社区
课程
招聘
[求助]在Delphi中嵌入ASM代码,调用函数时,怎样保持寄存器call前的状态?
发表于: 2013-9-3 12:11 4989

[求助]在Delphi中嵌入ASM代码,调用函数时,怎样保持寄存器call前的状态?

2013-9-3 12:11
4989
Delphi代码中嵌入asm代码,在asm代码中使用call 调用一个delphi函数,如果防止这个函数影响现寄存器的数据?

例如
asm
   mov ecx 10h
   mov edx 10h
   call MyFunc  //这个call内部会改变ecx 、edx或者其它任何寄存器。有什么办法能让除返回值的寄存器以外的寄存器都保持call前的状态?
   test eax,eax
   je @@aa
   .....

end;

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 442
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
pushad   popad
2013-9-3 12:17
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
pushad与popad是在myFun中使用吧,但是我的delphi函数不是用asm写的。
2013-9-3 12:20
0
雪    币: 768
活跃值: (535)
能力值: ( LV13,RANK:460 )
在线值:
发帖
回帖
粉丝
4
asm
   mov ecx 10h
   mov edx 10h
pushad
   call MyFunc  //这个call内部会改变ecx 、edx或者其它任何寄存器。有什么办法能让除返回值的寄存器以外的寄存器都保持call前的状态?
   test eax,eax
popad
   je @@aa
   .....

end;
2013-9-3 12:37
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
pushad配套使用吧,在call后popad
2013-9-3 15:35
0
游客
登录 | 注册 方可回帖
返回
//