I wrote this simple assembly code (nasm on linux) and expected to have rbx storing the address of the memory space that saved a multiplication of floats:
section .data
real1: dq 25.665544
real2: dq 10.000
section .text
global _start
_start:
fld qword [real1] ; load real1 in the float stack, st0
fld qword [real2] ; st0 now holds real2, real1 in st1
fmul st0, st1 ; st0 *= st1
fstp qword [real1] ; save st0 in real1 and pop, real1 has the result
fstp qword [real2] ; save st1 in real2 and pop, float stack is empty
mov rbx, qword real1 ; store the address of real1 in rbx
mov rax, 1
int 80h
After compiling the program and running, I do an "echo $?" to see its return value. Well, it shows 224 on my terminal, but I was expecting to see something like the memory address, which I believe is saved in rbx at the end. Or maybe my expectation is wrong. Can you clarify what is happening?