将值从FPU移动到寄存器,反之亦然

时间:2016-06-12 15:20:38

标签: assembly x86

因此,我无法理解如何在不同位置(FPU /内存/寄存器)之间存储/移动值。我已经尝试过查看手册和谷歌搜索,但没有找到任何有用的东西。所以我写了以下代码:

global _floTest
_floTest:
fld dword[esi-8]    ;Load value into st0
fst dword [test]    ;store st0 into [test]

mov EAX,[test]      ;this line is useless
mov EAX,5
mov [test],EAX


fild dword[test]    ;load st1 from [test]
fsub st0,st0        ;st0 = 0
fadd st0,st1        ;fadd st0,st1
ret

_flotest是一个由c程序调用的函数,它将float作为输入并返回一个float。目标汇编程序是NASM。

我不明白的主要事情是,中间部分(EAX)字面上对函数的输出没有任何影响,函数总是返回给定的值。我可以对EAX执行任意操作,它将始终返回初始值。如果我将5移入[test]然后从[test]加载st1不应该st1的值为5吗?

0 个答案:

没有答案
相关问题