アセンブリ プログラムでセグメンテーション エラーが発生する理由を誰かが理解してくれるのではないかと思います。(心配しないでください。かなり短いプログラムです。)
segment .data
a dq 175
b dq 4096
segment .text
global _start
_start:
mov rax, [a] ; move *a into rax
add rax, [b] ; add *b to rax
xor rax, rax ; set to zero
ret ; return
a と b の値を加算して、プログラムが終了したときに最後の終了コードとして返す必要がありますよね? それで、echo $?
印刷する必要がありますのため、0 を出力する必要があり4271
か?xor
ます。
しかし、ええ、次を使用してコンパイルされました:nasm -f elf64 -l main.lst main.asm -o main.o && ld main.o -o main.exec
次に実行します。./main.exec && echo $?
いつものように助けていただければ幸いです。