我可以从我的EAX/RAX中获取一个int到FPU的寄存器,如st0吗?

J.B*_*.B. 3 x86 assembly nasm fpu

我目前正在大学开展一个小型的Assembler项目.现在我的问题是,是否有可能得到一个乘法器(int)的skalar,这是由用户给出的,从我的EAX/RAX寄存器到我的FPU寄存器之一,如st0?我正在使用NASM语法.

谢谢

fuz*_*fuz 5

没有办法直接将整数寄存器的内容传送到x87浮点寄存器,你必须通过内存.典型代码如下所示:

PUSH RAX         ; push RAX on the stack
FILD QWORD [RSP] ; load eight byte integer onto FP stack
ADD RSP,8        ; release storage from stack
Run Code Online (Sandbox Code Playgroud)

通常可以通过在函数开头的堆栈框架中为这种传输分配一些存储空间来避免使用堆栈指针.

  • @JB地址是整数,根据经验,你想把它们保存在通用寄存器中,比如`rax`,`rbx`等.假设你要加载的数据的地址是`rax`,你只需要写`fld qword [rax]`从该地址加载一个double.在开始编程x87 FPU之前熟悉x86汇编的基础知识可能是个好主意. (2认同)