问题标签 [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.
iphone - 如何找到运算的时间价值来优化新的算法设计?
我的问题是针对 iPhone、iPod 和 iPad 的,因为我假设架构会产生很大的不同。我希望某处有一个规范(可能针对各种芯片),或者有一种可靠的方法来测量每个特定指令的 T。我知道我可以使用任意数量的工具来测量使用的总处理器时间、使用的内存等。我想在较低级别进行量化。
所以,我能够弄清楚我经历了多少次算法的主要部分。例如,我n * (n-1)
在一个简单的实现中迭代时间,在另一个实现中迭代n
(最佳情况)和n + n * (n-1)
(最坏情况)之间。我还可以对指令总数(+ - = % * / 和逻辑语句)进行合理的计数,并且可以比较这些计数,但这是假设每个操作的权重相同。另外,我不知道如何权衡逻辑语句(if、else、for、while)与数学运算符的实际时间值......每次我“如果”的工作量与“+”一样多用它?我很想知道在哪里可以找到这些信息。
因此,为了清楚起见,我的目标是发现我对 CPU(或 GPU 或任何 U)的处理器时间要求,以便我可以围绕处理器时间设计最佳算法。有人可以告诉我从哪里开始使用 iOS 硬件吗?
编辑:此链接到开发人员门户中的 ClockServices.c和 SIMD 内容对于对此感兴趣的人来说可能是一个好的开始。今晚再喝几杯咖啡,我可能会熬过去;)
endianness - 如何通过位运算将小端转换为大端?
我知道你想做一些事情,比如把前四位放在一个堆栈上(从左到右读取)然后你只是把它们放在一个寄存器中并将它们移动 x 次以将它们放在右侧号码?
就像是
1000 0000 | 0000 0000 | 0000 0000 | 0000 1011
堆栈:底部 - 1101 - 顶部向左移动 28 次
然后对最后四位执行类似的操作,但向右移动并存储在寄存器中。
然后你和那个返回值为 0 的空
有没有更简单的方法?
assembly - 旋转指令(ROL,x86 上的 RCL)的目的是什么?
我一直想知道某些 CPU 具有的旋转指令的目的是什么(例如,x86 上的 ROL、RCL)。什么样的软件使用这些指令?
我首先认为它们可能用于加密/计算哈希码,但这些库通常是用 C 编写的,它没有映射到这些指令的运算符。(编者注:请参阅C++ 中循环移位(旋转)操作的最佳实践,了解如何编写将编译为旋转指令的 C 或 C++。此外,优化的加密库通常确实具有针对特定平台的 asm。)
有没有人发现它们的用途?为什么他们添加到指令集的位置?
algorithm - 布斯算法的本质是什么?
任何人都可以解释展位算法的本质以及如何在机器语言中使用它?
c++ - aesimc 指令给出不正确的结果
我正在尝试使用我的 Sandy Bridge 上提供的 AES 机器指令(基于英特尔的白皮书)来实现 AES 加密。不幸的是,我在生成用于解密的轮密钥的阶段停止了。具体来说,指令aesimc
(应用反向混合列操作)返回不正确的结果。
在他们的论文中,他们有一个例子:
所以输入:
我得到以下使用_mm_aesimc_si128()
:
它应该返回:
结果不一样。为什么会这样?
如果你想重现它,我用下面的代码对其进行了测试(记住-maes -msse4
编译时的参数):
编辑:英特尔白皮书中的示例是错误的。正如汉斯建议的那样,我的芯片是小端的,所以字节交换是必要的——来回交换。
processor - 处理器设计 - 危害管理单元
我正在设计一个单元 SPE 处理器。在从寄存器文件中获取数据之前,我必须检查数据危险。确定必要的停顿周期数的最佳方法是什么,以及我应该采取哪些设计决策来决定在哪里停顿流水线?我正在寻找关于这个主题的一般观点。
assembly - PowerPC 操作码表?
我有兴趣为自己的学习目的开发 PowerPC 仿真器。我在 PowerPC 汇编中找到了大量有关编程的资源,但是经过一段时间的查找,我还没有在任何地方找到指令/操作码映射表。当然,我需要操作码才能编写模拟器。我在哪里可以找到一个?
c++ - 如何检查 CPU 是否支持 SSE3 指令集?
以下代码对检查 CPU 是否支持 SSE3 指令集有效吗?
使用该IsProcessorFeaturePresent()
功能显然不适用于 Windows XP。
instruction-set - AMD Open64:优化的数学函数
Open64 是否有与Intel Short Vector Math Library Operations等价的东西。
谢谢你。