上記の記事を参考に次のコードを実行しますとエラーが返されました。調べたところオプションを設定する必要があるとかないとかのようですがよくわかりません、よろしくお願いします
extern printf ; printf関数を持ってくる
section .data
fmt: db "iteration: %d", 10, 0 ; printfで用いるフォーマット
section .text
global _main
_main:
mov rdx, 1 ; 初期値
mov rcx, 10
_loop:
push rcx ; rcxの避難
push rdx ; rdxの避難
mov rdi, fmt ; フォーマット
mov rsi, rdx ; カウントしている値
call printf ; printfをコール
; printfのコール時にレジスタの値が消えてしまう
pop rdx ; rdxを持ってくる
pop rcx ; rcxを持ってくる
add rdx, 1 ; rdxに1加算
cmp rcx, 0
loop _loop ; ループバック
fin:
mov rax, 0x2000001
mov rdi, 0
syscall
エラー
$ ld -macosx_version_min 10.14 -lSystem -o p100 p100.o
Undefined symbols for architecture x86_64:
"printf", referenced from:
_loop in p100.o
ld: symbol(s) not found for inferred architecture x86_64
また、
mov rsi, rdx
としている理由がわかりません