【发布时间】:2014-02-11 23:34:24
【问题描述】:
基于我在 google 上找到的代码(在 GCC 编译器上运行良好)
#define ASM __asm__ __volatile__
void MyFunc()
{
ASM("enc_start:\n\t");
printf("Hello, world!");
ASM("enc_end:\n\t");
}
int main()
{
unsigned int addr, len;
ASM("movl $enc_start, %0\n\t"
"movl $enc_end, %1\n\t"
: "=r"(addr), "=r"(len));
printf("Address of begin of function: %X", addr);
printf("Len is of: %d bytes", len);
return 0;
}
我想在 Visual Studio 中转换它,我试过但失败了。我什至不知道这是否可能。你能帮我转换一下吗,或者至少给我一个类似的方法来得到同样的结果?
非常感谢。
【问题讨论】:
-
__asm__是 gcc 的扩展。 MSVC 有类似的扩展,但语法不同,请在文档中查找。 -
注意:GCC 与 VS 非常不同!
-
@Paranaix 整个
asmsn-p 是gcc调用extended asm,所以这基本上是一个C程序,其中asm代码专门为gcc编写。 gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html -
@user2485710 是的,你想从我这里得到什么?我不是说清楚了吗?
-
@Paranaix 只是说这不仅仅是
__asm__关键字;)
标签: c++ visual-c++ assembly