0

我有一个程序,只要用户输入 Y(是),我就会循环。然后用户输入 long float 类型的数据。我还有一个计数器,r14,每次输入长浮点数时都会计数。循环结束后,我希望计算平均值。如果我这样做:

fld tword [r14]

并显示它,我会得到一个分段错误。我也尝试了很多其他的东西,但它总是给我一个段。尝试分割显示后出现故障。我认为问题在于 r14 是一个 int,我不能像那样将它放入 FPU 堆栈并进行划分。但我想不出另一种方法。

有人可以帮忙吗?提前致谢。

4

1 回答 1

0

FPU 指令从内存或 FPU 寄存器中获取参数,而不是从通用 CPU 寄存器中获取参数。

fld tword [r14]tword从包含在的地址的内存位置获取 ar14并将其推送到 FPU 堆栈的顶部。

如果r14不指向可以读取 10 字节浮点值的内存位置,则会出现分段错误。

因此,将您的浮点数存储在内存中并使用fld.

于 2013-02-22T03:57:55.657 回答