Skip to content

Instantly share code, notes, and snippets.

@baobao
Last active Dec 7, 2018
Embed
What would you like to do?
; 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