MMX 是不是真的支持 PADDD 指令,即使英特尔的手册中没有它?

Posted

技术标签:

【中文标题】MMX 是不是真的支持 PADDD 指令,即使英特尔的手册中没有它?【英文标题】:Is the PADDD instruction actually supported by MMX, even though it's missing from Intel's manual?MMX 是否真的支持 PADDD 指令,即使英特尔的手册中没有它? 【发布时间】:2017-06-18 16:12:31 【问题描述】:

我在 NASM 中编写了这段代码:

PADDD mm0, mm1

而且它的组装没有错误,但是这条指令,虽然它存在于 NASM 中,但我在 Intel 指令手册中找不到它,我找到的只是:

PADDD xmm1, xmm2/m128

这需要xmm 寄存器而不是mm 寄存器。 这是PADDD mm0, mm1的操作码:0FFEC1 这是PADDD xmm0, xmm1的操作码:660FFEC1 那么为什么英特尔的说明手册中缺少PADDD mm0, mm1

【问题讨论】:

我不知道你的来源,但它存在here。 @BenSteffan 我也在这里找到了它:en.wikipedia.org/wiki/X86_instruction_listings。但在手册中,它并不存在。 你似乎是对的。在最新的Intel manual 中,明显没有 mmx 变体。在旧版本的 Intel manual from 2005 中列出。 作为记录,它也出现在 2017 年 3 月的第 2 卷中。 【参考方案1】:

这是当前版本的英特尔手册中出现拼写错误/遗漏的简单案例。

在托管英特尔文档副本的this site 上(尽管不需要最新的英特尔文档),存在MMX 的操作码:

Opcode/Instruction    Op/En                64/32 bit Mode Support     CPUID Feature Flag  Description
0F FC /r1            PADDB mm, mm/m64 RM  V/V                        MMX                 Add packed byte integers from mm/m64 and mm.

您还可以在 an older Intel manual from 2005 以及 2017 年 3 月的版本中找到它。

这里没什么可看的;请继续前进。

【讨论】:

以上是关于MMX 是不是真的支持 PADDD 指令,即使英特尔的手册中没有它?的主要内容,如果未能解决你的问题,请参考以下文章

MultiMedia eXtensions - MMX:第一套应用于英特尔 80x86 指令集的 SIMD 扩展

指令集的相关问题!

1. SIMD发展历程

有没有办法用 gcc 自动生成 MMX 指令(不是 SSE)

DELL配置信息

如何将 8 字节长整数的每个字节相加?