Linux
任何 x86-64 Linux 彙程式序?
我想開始學習彙編語言,但所有的Google搜尋都沒有任何意義。我得到了一些
Exec format error
,甚至使用過wine
,這不利於理解。所以我想知道是否有人能說出命令行彙程式序將在x86-64
架構上做什麼,可能還有一些 Linux 的 hello world 範例?
有很多可用的彙程式序,包括:
gas
(GCC 的一部分binutils
,受 GCC 支持)——這在任何地方都可以使用,並且使用 AT&T 風格;- NASM(在你的發行版中尋找一個
nasm
包)——它支持 Intel 風格的助記符;- Yasm是對 NASM 的重寫(查找
yasm
包)。這是一個“Hello world”
gas
:.global _start .text _start: mov $1, %rax mov $1, %rdi mov $hello, %rsi mov $13, %rdx syscall mov $60, %rax xor %rdi, %rdi syscall hello: .ascii "Hello, world\n"
將此保存到
hello.S
,並使用gcc -c hello.S && ld -o hello hello.o
.NASM 的等價物是:
section .text global _start _start: mov rax, 1 mov rdi, 1 mov rsi, hello mov rdx, len syscall mov rax, 60 xor rdi, rdi syscall hello db "Hello, world",0x0A len equ $ - hello
將此另存為
hello.asm
,並使用nasm -felf64 hello.asm && ld -o hello hello.o
.