簡體   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