【发布时间】:2011-03-19 00:05:47
【问题描述】:
我有一个总和值存储在
fstp qword [ebx] ; Copy contents of st0 to space currently on top of the system stack
如何除以存储在寄存器 edi 中的整数值?
我以为只是
fdiv edi
但它说......blah blah blha的组合无效
洞察力?
【问题讨论】:
我有一个总和值存储在
fstp qword [ebx] ; Copy contents of st0 to space currently on top of the system stack
如何除以存储在寄存器 edi 中的整数值?
我以为只是
fdiv edi
但它说......blah blah blha的组合无效
洞察力?
【问题讨论】:
你不能。 FPU 无权访问整数寄存器。
【讨论】:
正如 Jens 在他的回答中所说,FPU 无法直接访问整数寄存器。您将需要使用暂存存储器进行传输。这是 x87 FPU 的主要缺点之一。示例代码可能类似于:
section .bss
fpscratch: resd 1
...
section .text
;other code goes here
MOV fpscratch, edi
FILD fpscratch
FDIV
(请注意上面的代码:显然,它没有经过测试,而且我的程序集有点生疏,所以它可能有问题,尽管它很好而且很短。)
【讨论】: