gpt4 book ai didi

assembly - 基本 FPU 指令/堆栈概述?

转载 作者:行者123 更新时间:2023-12-01 11:05:05 25 4
gpt4 key购买 nike

我试图对 x86 上的浮点运算有一个基本的了解。我知道我们有一个带堆栈的专用 FPU,但我没有找到太多关于堆栈在不同指令方面的行为方式的相关信息。

基本上,fpu 寄存器的寻址让我感到困惑。如果我指的是 st(#),我是在谈论一个特定的寄存器吗?或者它是从堆栈顶部的偏移量?

我想我的大部分问题都可以通过这个例子来回答:

如果我有一个空的 FPU 堆栈,然后运行:

fld x
fld y
fmul st, st(1)

结果会不会是:

ST(0) = y * x
ST(1) = x

或:

ST(0) = x * y
ST(1) = y

?

请注意,它们之间的区别在于 ST(1) 中的值。

最佳答案

它是从顶部偏移的。负载将现有项目进一步插入堆栈,持久性有机污染物使它们移回更靠近顶部的位置。以下是您的小程序的执行方式:

                   ST(0)      ST(1)
<start> --- ---
fld x x ---
fld y y x
fmul st(0), st(1) y*x x

This reference很好地解释了这一切。

关于assembly - 基本 FPU 指令/堆栈概述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6765775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com