第一個程式
編寫第一個程式
Section titled “編寫第一個程式”先看看基本的Hello World! 範例
global _start
section .data hello: db "Hello World!",10
section .text_start: mov rax, 1 ; 1=sys_write mov rdi, 1 ; 1=stdout mov rsi, hello mov rdx, 13 syscall
mov rax, 60 ; 60=sys_exit xor rdi, rdi syscall將上述代碼保存成.asm
程式碼變成可執行檔有兩個動作
將我們的文字程式碼轉換成目的檔的過程
nasm -f elf64 filename.asm -o filename.o這邊我們指定了輸出格式是linux的64位元可執行檔elf64
一個程式可能用到許多函式庫,例如libc
大部分程式採用動態鏈結的方式,執行時再去找.dll/.so,而靜態鏈結則是將函式庫綁定到程式
link的動作除了鏈結外部庫,還有重定位等內容將半成品的目的檔做成可執行檔
ld filename.o -o filename在linux shell執行當前目錄下的文件需要加上./開頭
./filename現在應該順利輸出Hello World!\n了