跳转到内容

第一个程序

编写第一个程序

先看看基本的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

构建及运行

程式码变成可执行文件有两个动作

1. 汇编

将我们的文字程式码转换成目标文件的过程

Terminal window
nasm -f elf64 filename.asm -o filename.o

这边指定了输出格式是linux的64位可执行文件elf64

2. 链接

一个程序可能用到许多函式库,比如libc
大部分程序采用动态链结的方式,运行时再去找.dll/.so,而静态链结则是将函式库绑定到程式
link的动作除了链结外部库,还有重定位等内容将半成品的目的档做成可执行文件

Terminal window
ld filename.o -o filename

运行

在linux shell运行当前目录下的文件需要加上./开头

Terminal window
./filename

现在应该顺利输出Hello World!\n了