求翻译一段汇编代码

时刻准备中 2009-10-16 04:26:05
bool has_eflag(const DWORD mask)
{
DWORD f0, f1;
asm("pushfl ; "
"pushfl ; "
"popl %0 ; "
"movl %0,%1 ; "
"xorl %2,%1 ; "
"pushl %1 ; "
"popfl ; "
"pushfl ; "
"popl %1 ; "
"popfl"
: "=&r" (f0), "=&r" (f1)
: "ri" (mask));
return ((f0^f1) & mask);
}

bool is_support = has_eflag((DWORD)0x00040000);

求高手解释一下上面C++语言(gcc环境)中嵌入的汇编语言的意思:has_eflag是函数,下面是调用。请翻译成标注的汇编语言代码。
谢谢!
...全文
92 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
时刻准备中 2009-10-17
  • 打赏
  • 举报
回复
哪位大侠帮忙翻译一下,gcc环境下嵌入c++中的一段代码,尤其是最后两行在vs2005下编译不过去,看不懂,请解惑!
时刻准备中 2009-10-16
  • 打赏
  • 举报
回复
OD反汇编?没用过,找了一下好像还需要破解。希望各位能帮忙把这段翻译一下,能在win32下嵌入c++代码中就行。现在这段代码gcc编译器可以编译,但是vs2005编译不过去。编译错误如下:
1>d:\myprogram\placement_new_test\placement_new_test\main.cpp(156) : error C2400: inline assembler syntax error in 'opcode'; found '('
1>d:\myprogram\placement_new_test\placement_new_test\main.cpp(166) : error C2143: syntax error : missing ';' before ':'
1>d:\myprogram\placement_new_test\placement_new_test\main.cpp(166) : error C2143: syntax error : missing ';' before ':'
1>d:\myprogram\placement_new_test\placement_new_test\main.cpp(167) : error C2059: syntax error : ')'
1>d:\myprogram\placement_new_test\placement_new_test\main.cpp(168) : warning C4800: 'unsigned long' : forcing value to bool 'true' or 'false' (performance warning)
BAYNPU 2009-10-16
  • 打赏
  • 举报
回复
把上面的代码装入OD反汇编,然后根据需要提出想要的汇编代码。
时刻准备中 2009-10-16
  • 打赏
  • 举报
回复
自己顶一个,请高手翻译成标准的汇编代码。谢谢!

21,459

社区成员

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

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