找回密码
 快速注册
搜索
查看: 10|回复: 1

[数论] 无进位乘法

[复制链接]

3147

主题

8381

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65357
QQ

显示全部楼层

hbghlyj 发表于 2024-10-19 16:52 |阅读模式
x86/x64指令PCLMULQDQ (无进位乘法四字)
这条指令在英特尔x64手册的第1067页,但它并没有说明它是乘以无符号整数还是有符号整数。
有人知道吗?

它是一种无进位乘法,而不是无符号或有符号的乘法。操作数被视为有限域的元素,而不是整数。

回忆普通二进制乘法的执行过程:

       1110      // 14
*      1011      // 11
-----------
       1110      // (1110 << 0)
      11100      // (1110 << 1)
     000000
+   1110000      // (1110 << 3)
-----------
   10011010      // 154

无进位乘法就是将最后的求和变成了求异或:

       1110      // 14
*      1011      // 11
-----------
       1110      // (1110 << 0)
      11100      // (1110 << 1)
     000000
^   1110000      // (1110 << 3)
-----------
    1100010      // 98

3147

主题

8381

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65357
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2024-10-19 17:22
CLMUL instruction set
Mathematically, the instruction implements multiplication of polynomials over the finite field GF(2) where the bitstring ${\displaystyle a_{0}a_{1}\ldots a_{63}}$ represents the polynomial ${\displaystyle a_{0}+a_{1}X+a_{2}X^{2}+\cdots +a_{63}X^{63}}$.
与传统指令集相比, CLMUL允许更有效地实现 GF($2^k$) 有限域上的乘法。
操作说明描述
PCLMULQDQGF (2) 有限域上两个 64 位多项式的无进位乘法
PCLMULLQLQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 00]
PCLMULHQLQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 01]
PCLMULLQHQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 02]
PCLMULHQHQDQ xmmreg,xmmrm [rm: 66 0f 3a 44 /r 03]
PCLMULQDQ xmmreg,xmmrm,imm [rmi: 66 0f 3a 44 /r ib]

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 22:10

Powered by Discuz!

× 快速回复 返回顶部 返回列表