You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于汇编指令FADDP ST(0), ST(1)的合理性咨询

关于FADDP ST(0), ST(1)指令的合理性分析

首先明确:这条指令是不合法、不合理的,x87浮点指令集中的FADDP不支持这种操作数顺序。

正确的FADDP指令语法与行为

FADDP的标准格式是:

FADDP ST(n), ST(0)

或者可省略源操作数ST(0),简写为:

FADDP ST(n)

它的执行逻辑是:

  • 将栈顶的ST(0)与ST(n)相加,结果存入ST(n);
  • 弹出栈顶的ST(0)(栈深度减1,原ST(1)及以下寄存器依次上移成为新的ST(0)、ST(1)...)。

你对指令行为的理解有误

你描述的“将ST(0)与ST(1)相加并将结果写入ST(0),随后ST(0)会被删除”不符合FADDP的实际逻辑。合法的FADDP ST(1), ST(0)(或FADDP ST(1))是把结果存在ST(1),再弹出ST(0),最终栈顶是相加后的结果(原ST(1)的位置)。

为什么FADDP ST(0), ST(1)不合法

x87指令对FADDP的操作数有严格限制:目的操作数必须是ST(n)(n≥1),源操作数固定为ST(0)。反过来把ST(0)作为目的、ST(1)作为源的写法,不符合指令集的编码规则,汇编器会直接报错。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:28:21