我不确定这是转发还是什么,但我会问它: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 个字符。我有点困惑。
你有什么推荐给我的?
感谢和快乐的编码!