繁体   English   中英

Linux上的汇编编译器。 还是AS?

[英]Assembly compiler on linux. Nasm or AS?

我不确定这是转发还是其他内容,但我会问:P

在Linux中,我可以使用GCC编译C代码。 而且我可以用NASM编译asm代码。 但是,当我使用nasm创建输出文件时: nasm -f elf something.asm -o objfile会创建一个目标文件(对吗?),但我显然无法运行。 因此,我要做的是使用gcc和nasm。 我有objfile,然后单击“链接”? 与gcc:gcc objfile -o可执行文件

问题:那么使用gcc和其他带有nasm的程序制作简单的C有什么区别? 可执行文件的大小:(它们完全一样)

-rw-r--r-- 1 int3 int3  280 Out 11 19:22 asm.asm
-rwxr-xr-x 1 int3 int3 7330 Out 11 19:22 ASMprogram
-rw-r--r-- 1 int3 int3   50 Out 11 19:08 c.c
-rwxr-xr-x 1 int3 int3 7294 Out 11 19:14 Cprogram
-rw-r--r-- 1 int3 int3  608 Out 11 19:22 objasm

汇编如何比C程序具有更多的字节? (它有extern printf):(

我真的很想在不使用gcc和C库的情况下进行编程。 我知道Linux的中断,特殊中断是int $ 0x80。 我可以打电话给sys_write。 但是它只写1个字符。 我有点困惑。

您向我推荐什么?

谢谢,编码愉快!

编译到汇编时,您尝试过:

gcc -S -m32 -O1 file.c 

-S表示编译为程序集,但不链接至可执行文件。 m32表示您的32位计算机(即使您使用64位也可以)-O1表示您要将其优化到第一级。 优化级别越高,将越难阅读。 编译后,您将有一个.s文件,这是您的汇编代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM