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

NASM编译fst tword [mem]报错是否属于软件Bug?

这不是NASM的Bug,而是遵循x86指令集规范的正常行为

其实这并不是NASM的bug,而是它严格按照x86浮点单元(FPU)的指令集规则工作的正常表现。

具体来说,x86指令集对fst和fstp的操作数支持范围有明确的区分:

  • fst指令的设计目标是复制FPU栈顶的值,它仅支持将值写入32位单精度(dword)内存、64位双精度(qword)内存,或者另一个FPU寄存器。从指令集定义上,它就不支持写入80位扩展精度(tword)的内存地址——根本没有对应的机器码来实现这个操作。
  • fstp指令则是复制并弹出FPU栈顶的值,它在fst的基础上额外支持写入80位扩展精度(tword)内存,这是指令集本身赋予它的功能,和汇编器无关。

NASM在这里报错是完全正确的:它检测到你试图使用fst搭配tword内存操作数,而这种组合在x86指令集中是不存在的,所以拒绝生成无效的机器码。你可以去查Intel或AMD的官方x86指令集手册,里面会明确标注fst的内存操作数仅支持dword和qword类型,而tword仅对fstp开放支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:12:27