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

如何在8087的ST(0)与ST(i)寄存器间复制值?求ST(i)到ST(0)单指令

将ST(i)复制到ST(0)的x87指令方案

x87浮点指令集里没有单指令能在不改变栈结构、不影响其他ST寄存器的前提下,直接把ST(i)的值复制到ST(0)。

你想到的两步指令组合是完全可行的最优解:

  • fxch ST(i):交换ST(0)和ST(i)的内容
  • fst ST(i):将交换后的ST(0)(原ST(i)的值)复制回ST(i),让ST(i)恢复原值

执行完这两条指令后,只有ST(0)被替换为原ST(i)的值,其他寄存器和栈的状态完全不受影响。

额外说明:如果不限制栈结构的临时变动,fld ST(i) + fstp ST(i)也能实现目标,但这个过程会先把ST(i)压入栈顶(导致所有原ST寄存器编号后移一位),再将新栈顶的值复制回ST(i)并弹出栈,虽然最终结果正确,但不符合你“不影响其他寄存器或栈”的要求,因此不适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:13:08