これが再投稿なのかどうかはわかりませんが、質問します:P
Linux では、C コードを GCC でコンパイルできます。また、NASM で asm コードをコンパイルできます。しかし、nasm のような出力ファイルをnasm -f elf something.asm -o objfile
作成すると、オブジェクト ファイルが作成されますが (そうですか?)、明らかに実行できません。だから、私はgccとnasmを使っています。私はobjfileを持っていて、それから「リンク?」gcc の場合: gcc objfile -o 実行可能ファイル
質問: gcc を使用して単純な C を作成する場合と、nasm を使用する他のプログラムを作成する場合の違いは何ですか? 実行可能ファイルのサイズ: (それらはまったく同じものを持っています)
-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文字しか書きません。私は少し混乱しています。
あなたは私に何をお勧めしますか?
ありがとう、ハッピーコーディング!