Skip to content

Instantly share code, notes, and snippets.

@baobao
Last active July 31, 2022 07:15
Show Gist options
  • Save baobao/377b98f97de38fd7e8c97590bc3d6785 to your computer and use it in GitHub Desktop.
Save baobao/377b98f97de38fd7e8c97590bc3d6785 to your computer and use it in GitHub Desktop.
; global シンボル名で公開したいシンボルを定義(外部から参照可能になる)
global _main
; DATAセクションの始まりを定義
section .data
; str_helloというラベルを定義(あとから参照できるようにする)
; db 文字列で、指定文字列をASCIIコードに変換して数値として連続して書き込むということを意味する
; db "H","e","l","l","o", " World", 0x0a と記述しても同じ
; 0x0aは改行の意味
str_hello: db "Hello World", 0x0a
; TEXTセクションの始まりを定義
section .text
; _mainの処理
_main:
; 実行するシステムコールの指定4は標準出力
; x64の場合は0x2000000を加算した値にする
mov rax, 0x2000004
; 標準出力システムコールの第1引数 出力のファイルディスクリプタの指定
; 1を指定すると標準出力, 2は標準エラー出力, 0は標準入力
mov rdi, 1
; 標準出力システムコールの第2引数
; 出力するデータの先頭アドレスを指定する
; 定義済の"Hello World", 0x0aのアドレスがコピーされる
mov rsi, str_hello
; 標準出力システムコールの第3引数
; 出力するデータのバイト数を指定
; 13バイトを指定している
mov rdx, 13
; 標準出力システムコール実行
syscall
; exitシステムコール 1を指定(現在のプロセスを終了)
; x64環境なので先程と同じで0x2000000を加算した値にする
mov rax, 0x2000001
; exitシステムコールの第1引数を指定する
; ステータスコードをコピー
mov rdi, 0
; exitシステムコール実行
syscall
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment