Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用gcc编译.asm文件?_Gcc_Assembly - Fatal编程技术网

如何使用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语法。