Last active
July 31, 2022 07:15
-
-
Save baobao/377b98f97de38fd7e8c97590bc3d6785 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; 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