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は低電力でモバイルデバイスに向いている