是否可以编写汇编和c代码?假设我想从内存中复制一大块数据,在复制之前我想使用汇编指令禁用所有中断。另一种情况可能是我想添加用汇编语言编写的子程序。
请让我知道所有可能的方法。
是的,您可以,在 C 语言中,您可以将__asm__(...);
代码用于将汇编指令直接嵌入到已编译的代码中。
一个例子:__asm__("movb %ch, (%ebx)");
这里有一些关于它的文档:http: //www.codeproject.com/Articles/15971/Using-Inline-Assembly-in-CC
不,按照 C 标准,你不能。
但是,有编译器特定的方法可以做到这一点。检查编译器的内联汇编。
或者,您可以将要在单独的 .asm 文件中作为函数执行的程序集编写,然后从 C 中调用它。但是,您将始终有调用开销。
在 x64 上没有内联汇编。但是有一种叫做内在函数的东西,它可以让你做一些 C 不能做的事情。(它们取代了频率使用的 asm 代码)
您可以在此处阅读有关内在函数的更多信息:http: //msdn.microsoft.com/en-us/library/26td21ds.aspx