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

AVX-512FP16半精度浮点数Disp8*N压缩元素大小及NASM编译疑问

结论:这是NASM和NDISASM 3.02的bug

根据2026年3月版《Intel 64和IA-32架构软件开发手册》,VCMPSH指令的标量FP16操作定义明确:

  • 内存操作数为m16(2字节半精度浮点数),因此Disp8*N压缩寻址中的N=2字节(元素长度)。
  • Disp8*N的计算规则是:实际内存偏移 = Disp8值 × N。对于[RBP+4],实际偏移为4,因此Disp8值应为4 ÷ 2 = 02,对应指令编码的第7字节应为02。

NASM 3.02的问题在于:

  • 汇编时错误地将N按4字节计算,得出Disp8值为4 ÷ 4 = 01,生成了错误的编码62 F3 7E 08 C2 4D 01 00。
  • NDISASM 3.02反汇编时虽能正确解析出内存地址word [rbp+0x4],但未纠正编码中Disp8字段的错误,本质是汇编阶段的位移计算逻辑不符合Intel手册规范。

你的理解完全正确,这是NASM/NDISASM 3.02的实现bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 20:53:14