如何使用gcc编译.asm文件?
我有一些如何使用gcc编译.asm文件?,gcc,assembly,Gcc,Assembly,我有一些.asm文件使用英特尔汇编格式,但我想使用GCC编译它们。有人知道如何在GCC中做到这一点吗?我知道NASM和YASM是这个问题的选项,但是GCC自己能做到吗?要编译。asm文件以与GCC一起运行,您必须: 确保您的“\u start”标签是main 使用nasm-f elf file.asm创建.asm文件的对象 使用gcc-m32-o file file.o创建的链接对象文件* 使用/file *链接基于32位的程序,链接基于64位的程序,我想只有gcc-o file file.o
.asm
文件使用英特尔汇编格式,但我想使用GCC编译它们。有人知道如何在GCC中做到这一点吗?我知道NASM和YASM是这个问题的选项,但是GCC自己能做到吗?要编译。asm
文件以与GCC一起运行,您必须:“\u start”
标签是main
nasm-f elf file.asm创建.asm
文件的对象
使用gcc-m32-o file file.o创建的链接对象文件*
使用/file
*链接基于32位的程序,链接基于64位的程序,我想只有gcc-o file file.o
可以。gcc-c myfile.s-o myfile.ono,我的意思是如何运行gcc-c*.asm?请通过编辑问题并添加它,向我们展示您试图汇编的代码。我这样问是因为它确实关系到asm文件是为什么编写的。GCC通常通过将.s
和.s
程序集文件传递给GNU汇编程序来处理它们。GNU汇编程序的语法与NASM汇编程序不同。如果你提供了你的汇编代码,我们可以确定你真正想要做的是什么。如果你有一个NASM汇编文件,那么你可以用类似于NASM-f elf32 myfile.asm-o myfile.o的东西来汇编它,然后你可以使用GCC将它链接到一个类似于GCC-m32-o myfile.o
的可执行文件。如果64位代码将32
替换为64
。GCC不能汇编一个用于NASM的文件。好吧,据我所知,GCC不能直接编译.asm文件,而且.asm应该由NASM像那样编译,对吗?我的意思是,如果gcc能够重新识别.asm格式并将其构建在一起?是否可以在根本不使用nasm的情况下实现这一点?@bluejayke:如果您的源文件是用nasm语法编写的,则不会。NASM和YASM是唯一两个理解NASM指令、宏和语法规则的汇编器(就像裸标签是立即数而不是内存操作数)。GCC/GAS无法汇编NASM语法。