我正在研究许多与c一起编译的汇编语言代码。他们使用简单的#define 程序集而没有boot.s代码中的任何头文件。这是如何工作的?
答案 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。只使用文件名应该没问题。