如何在c中编译汇编语言

时间:2010-09-26 06:57:44

标签: c assembly

我正在研究许多与c一起编译的汇编语言代码。他们使用简单的#define 程序集而没有boot.s代码中的任何头文件。这是如何工作的?

4 个答案:

答案 0 :(得分:1)

编译器经常包含内联汇编,但我相信它是特定于编译器的。

我不记得确切的细节,但我认为它是这样的:

void myFunc(void)
{
    int myNum; /* plain old C */

    __asm   /* Assembly */
    {
       mov ax,bx;
       xor cx,cx;
    }

    myNum = 5; /* more C */
}

研究特定的编译器以获取详细信息。

答案 1 :(得分:1)

通常.s文件由汇编程序处理。在不知道任何其他细节的情况下,没有什么可说的了。 .s文件进入,.o文件出来。

许多汇编程序提供某种include指令以允许使用标题,这也是汇编语言。

啊,您链接的代码供GNU as汇编程序使用。如果您使用的是Linux或Mac,请man as了解它。如果您使用的是Windows,请安装MinGW或Cygwin。

答案 2 :(得分:0)

您在评论中发布的链接是汇编语言源文件,该文件首先通过c-preprocessor运行。这只是一个编程方便,但是很多汇编语言编译器无论如何都支持类似的结构,所以我不确定他们为什么选择了c-preprocessor路径。

答案 3 :(得分:0)

如果您的代码中包含“main proc”,那么您使用的是x86体系结构,并且您的文件以.asm结尾,您可以将其用于编译: tasm fileName.asm

结果你会得到你的fileName.obj文件。之后你需要链接它和 您可以使用 tlink filename.obj

要运行,只需在命令行中输入filename.exe

即可

如果您需要链接多个文件,请使用tlink filename1.obj filename2.obj等等

在编译和链接期间不必指定文件扩展名,如.obj或.asm。只使用文件名应该没问题。