NASMをインストールする
$ sudo apt install nasm
$ uname -sr
Linux 5.15.0-76-generic
$ nasm -v
NASM version 2.15.05
$ as -v
GNU assembler version 2.38 (aarch64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.38
$ ld -v
GNU ld (GNU Binutils for Ubuntu) 2.38
$ gcc –version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
hello.s
.text
.global _start
_start:
mov x2, #13 // x2 length
adr x1, msg // x1 string address
mov x0, #1 // x0 stdout
mov x8, #64
svc #0 // sys_write
mov x0, xzr
mov x8, #93
svc #0 // exit
msg:
.asciz "hello, world\n"
$ as -o hello.o hello.s
$ ld -o hello hello.o
$ ./hello
hello, world
ちなみに、CPUアーキテクチャがx86ではないので x86-64で記述するとエラーになる。
### x86-64とarm64の違い
x86 x64 は CISC(Complex Instruction Set Computer) と呼ばれる命令セット
「複雑な処理」を「少ない命令」で実行しようとする思想です。
arm は RISC(Reduced Instruction Set Computer) と呼ばれる命令セット
x64は高速でパワフル、PCでよく使用される
ARM64は低電力でモバイルデバイスに向いている