Assembly 如何将.s转换为.asm?
所以我和MikeOS玩得很开心,但我在集会上很差劲。所以我用C编写了一个程序,并用GCC(Ubuntu)将其转换为汇编。但当我转换它时,它最终会变成一个.s文件。那么如何将其转换为.asm?我用来生成.s文件的命令是Assembly 如何将.s转换为.asm?,assembly,gcc,gnu-assembler,Assembly,Gcc,Gnu Assembler,所以我和MikeOS玩得很开心,但我在集会上很差劲。所以我用C编写了一个程序,并用GCC(Ubuntu)将其转换为汇编。但当我转换它时,它最终会变成一个.s文件。那么如何将其转换为.asm?我用来生成.s文件的命令是 gcc -S test.c 另一种方法是,如何将.s转换为.bin?这可能也有帮助 谢谢 不需要转换。.s扩展用于汇编,就像.asm一样 同一种语言只有两个不同的扩展 如果要使用.asm,可以重命名该文件 但请记住,由编译器(如GCC)生成的程序集不太可能直接在独立环境(如自定义
gcc -S test.c
另一种方法是,如何将.s转换为.bin?这可能也有帮助
谢谢 不需要转换。
.s
扩展用于汇编,就像.asm
一样同一种语言只有两个不同的扩展 如果要使用
.asm
,可以重命名该文件
但请记住,由编译器(如GCC)生成的程序集不太可能直接在独立环境(如自定义操作系统)中使用,因为它将依赖于GCC和主机系统中可用的内容
如果要将ASM生成为不同的方言,请查看GCC标志,如-masm
:
intel语法-masm=intel
AT&T语法-masm=att
.s
,对Intel使用.asm
。请注意,GCC仍将生成一个带有英特尔语法的
.s
文件,尽管….s也是汇编…是的,但是.asm是英特尔,.s是不同的。(我可能错了,我是汇编新手)请看我的答案…@ArenCoskun有几十个汇编程序使用文件扩展名.asm
。如果不知道您需要什么汇编器,这个问题就无法回答。可以由GCC(即GAS AT&T语法或.intel_syntax noprefix
from-masm=intel
)组装的Asm肯定应该位于.S
(C预处理器+汇编)或.S
(仅汇编)文件中。我的意思是你当然可以叫它.asm
,但是你也可以叫你的C源文件hello.foobar
,然后用-x
选项手动告诉它是什么类型的文件。按照惯例,.asm
通常用于NASM源文件,而不是GAS。(英特尔语法的另一种风格)@PeterCordes按惯例是的,尽管GCC不关心并生成.s文件,不管语法如何……我不是这么说的。GCC无法生成NASM语法文件。NASM使用不同的指令,如db“foo”,0
而不是。asciz“foo”
,并且mov edi,symbol
是mov立即数,而不是负载。所以它不像GAS。英特尔语法
。有关英特尔语法不同风格的更多信息,请参阅。GAS可以从gcc-s-masm=intel
汇编.s
文件,而NASM不能。