我被困在32位机器读写周期的简单作业

时间:2011-08-23 05:06:06

标签: c++ c

在32位机器上读取或写入内存是每个周期4字节完成的,如果我有一个整数和一个带有一些值的长双变量,那么读取/写入它们需要多少个周期?如果我在不同的平台和机器上使用这些变量,它会有什么不同吗? 谢谢。

4 个答案:

答案 0 :(得分:2)

在您的情况下,了解整数 long double 的字节数。然后使用三的规则来计算它需要多长时间。

答案 1 :(得分:2)

在x86上32位大小就像这样整数4个字节,long double实际上是16个字节(至少它应该是,在某个arch上它的8个字节和其他12个字节)并且每个循环只能在4个字节上运行一段时间,因此整数需要1个周期,而长双倍需要4个(分别为所提到的其他尺寸的3个和2个)周期。在具有SSE指令的64位机器上,可以在一个或两个周期内完成16个字节。

答案 2 :(得分:1)

这里有一个关于这个主题的好问题:long long implementation in 32 bit machine评分最高的回复可以深入了解它们的存储和操作方式。

由于我不知道你指的是什么架构,因为它只是作业,我很想说它需要两个mov指令才能执行存储长整数。因此,两个周期。

答案 3 :(得分:0)

整数= 4字节,长双精度= 10字节,表示整数= 1循环长双精度= 2.5(3?)循环。