1

各种 x86 指令有多少不同的操作周期时间,具体取决于所涉及的数据是 float、double、int、short、long 等?

我希望能够确定是否避免针对特定数据类型的特定指令。

4

3 回答 3

4

处理器实际执行x86 指令的日子已经一去不复返了。486 处理器是第一个开始将它们转化为微操作的处理器。这可以以各种方式重新排序和组合,以实现具有多个执行单元的超标量执行。

这使得通过循环计数分解 x86 指令成为一种危险的冒险。英特尔处理器手册只是提供提示,您可以在第 4 卷中找到它们。

于 2012-12-19T13:54:52.423 回答
2

我希望能够确定是否避免针对特定数据类型的特定指令。

您必须避免在任何其他数据类型或大小上使用任何处理特定数据类型和大小的指令,因为它会导致意外行为。例如,在典型的 x86 实现中,aDWORD的大小与 a 相同,float但它们的编码方式不同:分别是小端序和尾数/指数。

在汇编级语言中,机器没有“类型”的概念,它将根据它从当前指令指针处的操作码推断出的大小/编码信息对一块内存进行操作。

另一方面,如果您真的知道自己在做什么,将一种类型视为另一种类型并在极少数情况下对其进行修改可以产生异常结果 -快速逆平方根

于 2012-12-19T12:51:10.457 回答
0

避免除法(包括余数/残数)。自然地使用其余的基本操作和类型。

于 2012-12-19T14:35:27.670 回答