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