问题标签 [mmx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
267 浏览

assembly - (a*b)/256 和 MMX

我想知道是否可以使用 MMX 寄存器中的四个并行值进行以下计算:

其中a是有符号字,b是 0-256 范围内的无符号值(混合因子)

I think my problem is that I'm not sure about how (or if) pmullw and pmulhw will help me with this task.

0 投票
2 回答
1679 浏览

sse - 将内存中的 32 位加载到 xmm 寄存器中

内联汇编:

什么是等效的内在代码?

0 投票
1 回答
1611 浏览

visual-studio - MMX 错误 A2022:指令操作数必须相同大小

我正在尝试手动调整一段代码(最初用 C++ 编写的函数)并且汇编程序抛出此错误:错误 A2022:指令操作数必须相同大小

在使用“movq”指令的行。

编码:

我在 32 位盒子上使用 masm。

0 投票
1 回答
300 浏览

c - MMX SSE 到 C 代码转换时图像质量下降

我正在将 MMX SSE 转换为等效的 C 代码。我几乎已经转换了它,但我得到的图像质量不合适,或者我可以看到图像中有一些噪点。我正在调试过去 5 天的代码,但我没有得到任何原因。如果你们调查这个问题并帮助我,我会非常高兴。

原始 SSE 代码:

我转换的代码如下

抱歉,如果代码不那么可读。wh表示宽度和高度。out_h并且out_v是稍后用于其他目的的两个参数。

0 投票
1 回答
1014 浏览

assembly - 如何将 MMX 与 SSE 操作并行使用

Wikipedia中,它说:

SSE2 中增加的整数支持使得 MMX 在很大程度上是多余的,尽管在某些情况下可以通过将 MMX 与 SSE 操作并行使用来进一步提高性能。

这是否意味着处理器可以在运行 SSE/MMX 指令的同时运行另一个 MMX/SSE 指令,因为这些指令在单独的单元中运行?

或者只是因为它们使用不同的寄存器,你可以一起使用它们而不需要切换模式(MMX模式和FPU模式不能“同时”工作,你必须手动切换到不同的模式)?

0 投票
1 回答
502 浏览

assembly - MMX - 使用常量字节

我一直在做一些事情并遇到了另外几个问题。首先:

根据最后一个问题,我一直在尝试使用 QWords 的过程(我可能也会尝试使用 DWords 来学习)。我在使用的开发机器上只能访问 MMX 指令,所以我一直在去那里。问题一直在处理来自“rot”的值,因为我已经确定 MMX 操作只能通过我从 MASM32 得到的错误在这些寄存器上工作。但是当我尝试将“rot”和“64-rot”放入 MMX 寄存器时,我得到了更多的错误。我该如何解决这个问题?

我还需要将 MMX 寄存器添加为 QWords。我在参考资料中没有看到执行此操作的说明。无论如何,我是否需要将它们拆分为常规寄存器或通过 FP 指令推送它们?

0 投票
1 回答
416 浏览

assembly - 这个 MMX 内存复制代码需要栅栏吗?

这个基本的 mmx 内存复制代码在释放模式下会破坏内存,但仅限于某些编译器。具体来说是 Visual Studio 2010。我认为这是因为这段代码需要一个内存围栏,但我不确定它会去哪里或确切原因。此代码与 Visual Studio 2005 完美配合。

MMXMemCopy ENDP

0 投票
1 回答
393 浏览

x86 - 是否有任何指令可以在 MMX 寄存器中添加所有字节?

我需要计算 MMX 寄存器中的 4 个整数的总和。例如,我有这个 MMX 寄存器: 在此处输入图像描述 我想得到这个结果(我不介意它是在同一个寄存器中还是在普通寄存器中): 在此处输入图像描述

我想知道是否有执行该操作的指令。我在 Windows 中使用 x86 程序集。我的第一个猜测是将 41放入另一个 MMX 寄存器并调用PMADDWD,这样我最终得到 [X1+X2][X3+X4] 但我认为这很脏。

提前致谢。

0 投票
1 回答
843 浏览

c - 编译内联 MMX 汇编程序时出错:后缀或操作数无效

以下代码:

我无法理解为什么它无法编译并出现以下错误:

为什么?

0 投票
3 回答
2126 浏览

windows - 我无法在 Visual c express ediion 2008 中组装 movd (MMX) 指令

当我尝试编译movd指令时,它显示错误为

我的代码如下:

这是文件,我从文件中.asm调用了这个函数C

我使用下面的代码修复了它