[英]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.