最近我看到了一个编译器如何组合两个32位整数,它们是一个类的属性值,并将它们存储为一个64位整数。我现在的问题是,为什么这样做?结合整数有什么优势?为什么要将两个32位整数合并成一个64位整数?
例如,如果我们有一个类
class FooBar {
int x = 1;
int y = 100;
}
以下属性,以便代替
i32 = 00000001
i32 = 01100100
我们得到:
i64 = 0000000101100100
你为什么要结合呢?
我的猜测是该寄存器使用64位。它只使用一个寄存器来存储这两个寄存器,而不是使用两个寄存器。 –
为什么不呢?如果机器以64位整数工作效率更高,那么这可能是一场胜利。你为什么在乎? –
CPU通常不具有类型。像“int”这样的东西是你的程序的一个属性,而不是机器代码的属性。将这种“组合”称为“合并”并不合适,因为前后是完全不同域的组成部分。 –