1 首先是Windows的inline asm形式:
void function_name{
....
__asm{
MASM inline syntax;
}
....
}
使用Windows的编译器,cl.exe来编译。默认使用的MASM汇编语法,使用ml.exe进行编译。具体语法查看MSDN。
2 如果使用Dev-C++编译器进行编译,查看安装目录,里面全是gcc.exe, as.exe默认使用gnu的标准,即
inline asm的形式为:
void c_func();
int main(int argc, char* argv[])
{
printf("%d : %s\n", argc, argv[0]);
asm("mov %0, %%eax\n\t"
"call %%eax"
:
:"m" (c_func));
return 0;
}
void c_func(){
printf("This is in C function\n");
}
gnu使用AT&T汇编语法,并且在inline时候会有些变动。上述是inline的扩展形式。
3 在写用户态应用程序时候,如果用到inline asm用哪一个编译器编译,就把代码写成哪个标准。
然而在写内核态程序,因为都是调用微软的build。。当然要写成Windows的语法形式。。