【发布时间】:2013-10-19 22:24:09
【问题描述】:
我不确定这是转发还是什么,但我会问它: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 程序有更多的字节? (它有外部 printf):(
我真的很想在不使用 gcc 和 C 库的情况下进行编程。 我知道Linux的中断,特别的是int $0x80。我可以调用 sys_write。但它只写 1 个字符。我有点迷茫。
你有什么推荐给我的?
感谢并祝您编码愉快!
【问题讨论】:
-
另一种选择是 clang 和 llvm 程序集。