问题标签 [instruction-set]

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 投票
2 回答
162 浏览

iphone - 如何找到运算的时间价值来优化新的算法设计?

我的问题是针对 iPhone、iPod 和 iPad 的,因为我假设架构会产生很大的不同。我希望某处有一个规范(可能针对各种芯片),或者有一种可靠的方法来测量每个特定指令的 T。我知道我可以使用任意数量的工具来测量使用的总处理器时间、使用的内存等。我想在较低级别进行量化。

所以,我能够弄清楚我经历了多少次算法的主要部分。例如,我n * (n-1)在一个简单的实现中迭代时间,在另一个实现中迭代n(最佳情况)和n + n * (n-1)(最坏情况)之间。我还可以对指令总数(+ - = % * / 和逻辑语句)进行合理的计数,并且可以比较这些计数,但这是假设每个操作的权重相同。另外,我不知道如何权衡逻辑语句(if、else、for、while)与数学运算符的实际时间值......每次我“如果”的工作量与“+”一样多用它?我很想知道在哪里可以找到这些信息。

因此,为了清楚起见,我的目标是发现我对 CPU(或 GPU 或任何 U)的处理器时间要求,以便我可以围绕处理器时间设计最佳算法。有人可以告诉我从哪里开始使用 iOS 硬件吗?

编辑:此链接到开发人员门户中的 ClockServices.c和 SIMD 内容对于对此感兴趣的人来说可能是一个好的开始。今晚再喝几杯咖啡,我可能会熬过去;)

0 投票
2 回答
1013 浏览

endianness - 如何通过位运算将小端转换为大端?

我知道你想做一些事情,比如把前四位放在一个堆栈上(从左到右读取)然后你只是把它们放在一个寄存器中并将它们移动 x 次以将它们放在右侧号码?

就像是

1000 0000 | 0000 0000 | 0000 0000 | 0000 1011

堆栈:底部 - 1101 - 顶部向左移动 28 次

然后对最后四位执行类似的操作,但向右移动并存储在寄存器中。

然后你和那个返回值为 0 的空

有没有更简单的方法?

0 投票
6 回答
32369 浏览

assembly - 旋转指令(ROL,x86 上的 RCL)的目的是什么?

我一直想知道某些 CPU 具有的旋转指令的目的是什么(例如,x86 上的 ROL、RCL)。什么样的软件使用这些指令?

我首先认为它们可能用于加密/计算哈希码,但这些库通常是用 C 编写的,它没有映射到这些指令的运算符。(编者注:请参阅C++ 中循环移位(旋转)操作的最佳实践,了解如何编写将编译为旋转指令的 C 或 C++。此外,优化的加密库通常确实具有针对特定平台的 asm。)

有没有人发现它们的用途?为什么他们添加到指令集的位置?

0 投票
1 回答
584 浏览

algorithm - 布斯算法的本质是什么?

任何人都可以解释展位算法的本质以及如何在机器语言中使用它?

0 投票
1 回答
538 浏览

c++ - aesimc 指令给出不正确的结果

我正在尝试使用我的 Sandy Bridge 上提供的 AES 机器指令(基于英特尔的白皮书)来实现 AES 加密。不幸的是,我在生成用于解密的轮密钥的阶段停止了。具体来说,指令aesimc(应用反向混合列操作)返回不正确的结果。

在他们的论文中,他们有一个例子: 在此处输入图像描述

所以输入:

我得到以下使用_mm_aesimc_si128()

它应该返回:

结果不一样。为什么会这样?

如果你想重现它,我用下面的代码对其进行了测试(记住-maes -msse4编译时的参数):

编辑:英特尔白皮书中的示例是错误的。正如汉斯建议的那样,我的芯片是小端的,所以字节交换是必要的——来回交换。

0 投票
7 回答
19054 浏览

assembly - 指令集和汇编语言是一回事吗?

我想知道指令集汇编语言是否是一回事?

如果不是,它们有何不同,它们的关系是什么?

谢谢并恭祝安康!

0 投票
0 回答
316 浏览

processor - 处理器设计 - 危害管理单元

我正在设计一个单元 SPE 处理器。在从寄存器文件中获取数据之前,我必须检查数据危险。确定必要的停顿周期数的最佳方法是什么,以及我应该采取哪些设计决策来决定在哪里停顿流水线?我正在寻找关于这个主题的一般观点。

0 投票
6 回答
10893 浏览

assembly - PowerPC 操作码表?

我有兴趣为自己的学习目的开发 PowerPC 仿真器。我在 PowerPC 汇编中找到了大量有关编程的资源,但是经过一段时间的查找,我还没有在任何地方找到指令/操作码映射表。当然,我需要操作码才能编写模拟器。我在哪里可以找到一个?

0 投票
6 回答
48526 浏览

c++ - 如何检查 CPU 是否支持 SSE3 指令集?

以下代码对检查 CPU 是否支持 SSE3 指令集有效吗?

使用该IsProcessorFeaturePresent()功能显然不适用于 Windows XP。

0 投票
2 回答
167 浏览

instruction-set - AMD Open64:优化的数学函数

Open64 是否有与Intel Short Vector Math Library Operations等价的东西。

谢谢你。