问题标签 [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.
c - 在 C 中使用内联汇编时出错
我正在尝试组装以使用我以前从未真正使用过的向量操作,并且我承认在掌握一些语法时遇到了一些麻烦。
相关代码如下。
在这个简单的示例中,我尝试对数组中的每个元素进行 16 位“3”比较。我希望输出是“0 0 65535 0”。但它甚至不会组装。
第一条汇编指令给了我以下错误:
错误:内存输入 0 不可直接寻址
第二条指令给了我一个不同的错误:
错误:“pcmpeqw”的后缀或操作数无效
任何帮助,将不胜感激。
c - 如何在 C 中的单个指令周期中添加 100 个整数元素的数组?
我有一个包含 100 个元素的数组,我想添加所有这 100 个元素。我正在使用与下面相同的 C 代码
让我们假设处理器需要 100 个指令周期来添加 100 个元素,这会降低应用程序的速度。所以,我想知道是否有任何指令可以在单个指令周期中添加 100 个元素以加速应用程序。
gcc - -g 标志更改程序的运行时和编译
我正在编写一个程序,试图使用 SSE 和 AVX SIMD 指令加速 Top K 过滤算法。我正在使用带有标志 -o3、-msse3 和 -lrt 的 icc 编译我的程序,运行时间约为 30 毫秒。但是,当我在末尾添加 -g 标志以使用 vtune 或 gdb 时,程序运行所需的时间会跳到 ~ 100 毫秒。
有人可以解释为什么会发生这种情况吗?我很困惑为什么 -g 会改变程序的编译。
performance - Inline ASM: Use of MMX returns NaN seconds on timer
Problem
I am trying to find out whether mmx
or xmm
registers are faster for copying elements of an array to another array (I know about memcpy()
but I need this function for a very specific purpose).
My souce code is below. The relevant function is copyarray()
. I can use either mmx
or xmm
registers with movq
or movsd
respectively, and the result is correct. However, when I use mmx
registers, any timer I use (either clock()
or QueryPerformanceCounter
) to time the operations returns NaN
.
Compiled with: gcc -std=c99 -O2 -m32 -msse3 -mincoming-stack-boundary=2 -mfpmath=sse,387 -masm=intel copyasm.c -o copyasm.exe
This is a very strange bug and I cannot figure out why using mmx
registers would cause a timer to return NaN
seconds, while using xmm
registers in exactly the same code returns a valid time value
EDIT
Results using xmm
registers:
Results using mmx
register:
Source Code
assembly - 如何通过 mmx 计算 3 个整数的平均值?
我有一个问题,希望你能帮助。我的任务是使用 mmx、xmm 或 sse 命令对图像(从 Java 发送)进行灰度处理。我已经在 C 和 asm 中完成了这个(使用逻辑取 R、G 和 b,然后找到 avg),现在我需要使用 mmx/xmm/sse AND 来提高性能(否则,教授拒绝接受它,明天是考试日)。
灰度化是取一个像素的 R、G 和 B 并用 R、G 和 B 的平均值替换它们。这很容易通过简单地将三个组合并做 idiv 来做到这一点,但是 mmx 中没有除法,所以我需要即兴发挥,我没有想法。
xmm 的问题是简单的“movaps xmm0,[rel v1]”让我崩溃,我有点没有时间去探索它,所以最好只通过 mmx 来做这件事。
昨天我写了一些使用 mmx 的东西,但它的工作速度比 C 代码慢 30 倍 :( 嗯,我也不需要史诗般的性能——只要能正常工作的东西。
有任何想法吗?也许可以通过移位或类似的方法来完成除法?非常感谢帮助,谢谢。
c++ - ASM - 使用扩展指令执行 (int + int)* 浮点常量的最佳方法是什么?
我正在执行一个函数来响应 WM_MOUSEMOVE 在 opengl 应用程序中移动我的相机。
功能是取STARTING POINT(wm_lbuttondown命令中的旧lParam)并从STARTING POINT中减去CURRENT POINT,然后将结果乘以一些浮点系数。
好的,它有效,但我正在尝试练习使用 asm 和所有那些不错的寄存器。所以这是我的代码,但使用 mmx 寄存器
问题是 - 这是做如此简单的运动的一种快速方法,还是我可以选择其他方式来做这些事情?谢谢
c# - 如何在 C# 中使用 MMX 代码进行图像处理
我正在编写一个使用 C# 进行太多 128 位计算的应用程序。(图像处理 - 16bit R、16bit G、16bit B、16bit A)
我可以在一个周期内计算这 2 个 64 位 RGBA 颜色吗?
有没有办法使用汇编(MMX)代码来进行计算。
c - 装配 MMX 点积分段错误
我正在尝试使用汇编语言对两个小数组执行简单的点积计算。这是我的代码:
从makefile编译:
结果是:
使用gdb分析原因显示如下:
我不知道为什么我不能将结果移回寄存器。任何建议都受到高度赞赏。
提前多次感谢您。
文森特
assembly - 如何将通用64位寄存器的值写入MMX?
我正在使用 x64 程序集,Visual C++ 2010/MASM 告诉我指令
movq mm0, rax
包含“无效的指令操作数”。
这真的是非法的,还是可能是一个错误?如何在不使用指令的情况下执行此过程?