第一个程序
编写第一个程序
先看看基本的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. 汇编
将我们的文字程式码转换成目标文件的过程
nasm -f elf64 filename.asm -o filename.o
这边指定了输出格式是linux的64位可执行文件elf64
2. 链接
一个程序可能用到许多函式库,比如libc
大部分程序采用动态链结的方式,运行时再去找.dll/.so,而静态链结则是将函式库绑定到程式
link的动作除了链结外部库,还有重定位等内容将半成品的目的档做成可执行文件
ld filename.o -o filename
运行
在linux shell运行当前目录下的文件需要加上./开头
./filename
现在应该顺利输出Hello World!\n了