【问题标题】:How to write assembly and c code in a same .c file [duplicate]如何在同一个.c文件中编写汇编和c代码[重复]
【发布时间】:2013-08-23 05:25:52
【问题描述】:

是否可以编写汇编和 c 代码? 假设我想从内存中复制一大块数据,在复制之前我想使用汇编指令禁用所有中断。 另一种情况可能是我想添加用汇编语言编写的子程序。

请告诉我所有可能的方法。

【问题讨论】:

标签: c assembly arm


【解决方案1】:

是的,您可以,在 C 语言中,您可以使用 __asm__(...); 代码将汇编指令直接内联到您的编译代码中。

一个例子:__asm__("movb %ch, (%ebx)");

这里有一些关于它的文档:http://www.codeproject.com/Articles/15971/Using-Inline-Assembly-in-C-C

【讨论】:

    【解决方案2】:

    不,按照 C 标准你不能。

    但是有编译器特定的方法可以做到这一点。检查编译器的内联汇编。

    或者您可以将要在单独的 .asm 文件中执行的程序集作为函数编写,然后从 C 中调用它。但是您将始终有调用开销。

    在 x64 上没有内联汇编。然而,有一种叫做内在函数的东西可以让你做一些 C 不能做的事情。(它们取代了频率使用的 asm 代码)

    您可以在此处阅读有关内在函数的更多信息: http://msdn.microsoft.com/en-us/library/26td21ds.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      • 2018-05-07
      相关资源
      最近更新 更多