2つの数字を取得し、除算したいと思います。 しかし、それは浮動小数点例外を投げつけるので、私はデバッグにgdbを使いました。私はraxに値を格納すると、その上位ビットが「破損」していることがわかりました。NASMのmovが正しく動作しません
[num]が20dの場合、raxに0x2800000014が格納されます。
[num]が40dの場合、0x1400000028が格納されます。
私はそれらを保存すると、その上位ビットの一部が崩れているようです(?)。どうしたの?
section .data
in: db "%d %d", 0
len: equ $-in
section .bss
num: resd 2
section .text
main:
mov rdi, in
mov rsi, num
mov rdx, num + 4
xor rax, rax
call scanf
mov rax, [num] ; ------------- here
mov rdx, [num + 4]
idiv rdx
...
xor rax, rax
ret