求帮助改写一段汇编

勤奋的小游侠 2014-03-31 06:16:36
最近在做一个项目的移值工作,从win32移到64bit.

项目一部分用到了汇编,直心让我蛋疼。
一是64位的vc++编译器不支持在代码中直接用asm语句了
二是64位的asm语法和32位的有点不同,比如寄存器名称之类的。

我只是以前略学习过汇编,只记得个大概语法,现在时间比较紧,再重新看书温习感觉也不是一二天能完成,而且代码中的汇编语句比较少。所以这里想请求各位同行帮下忙,帮忙将下面的asm代码改成64bit的。最好能够能写成一个完成的asm文件,让我能直接生成一个obj可以link到我的工程。

非常感谢

#define INTERCEPT_EPILOG(argsSize) \
__asm \
{ \
__asm mov eax, result \
__asm cmp stdcall, 0 \
__asm mov esp, ebp \
__asm pop ebp \
__asm jne stdcall_ret \
__asm ret 4 \
__asm stdcall_ret: \
__asm ret (4 + argsSize) \
}



#define INTERCEPT_EPILOG_NO_RETURN(argsSize) \
__asm \
{ \
__asm cmp stdcall, 0 \
__asm mov esp, ebp \
__asm pop ebp \
__asm jne stdcall_ret \
__asm ret 4 \
__asm stdcall_ret: \
__asm ret (4 + argsSize) \
}

将这两个宏写成64bit的asm可以编译的inline函数。
...全文
113 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
WJN92 2014-04-01
  • 打赏
  • 举报
回复
如果就是这小段代码的话,改也没什么啊. EAX 改成 REX 如此类推 ret 4 ,这里就不知道你的函数怎么定义的了
勤奋的小游侠 2014-04-01
  • 打赏
  • 举报
回复
难道真的要自己啃这块硬骨头?
勤奋的小游侠 2014-03-31
  • 打赏
  • 举报
回复
只能给100分上限,如果有人能帮助,另外赠送400分。

21,498

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧