如果iOS是32位操作系统,我们如何使用uint64_t和int64_t?

时间:2013-02-28 16:31:56

标签: ios

它似乎工作正常,但我认为可以存储在内存中的最多是32位整数?

现在我对它的不同之处感到困惑。

谢谢!

2 个答案:

答案 0 :(得分:10)

我认为其他答案并未正确解释这一点。

uint64_t和int64_t是 C语言数据类型,而不是硬件数据类型。编译器会尽一切努力使这些类型作为64位无符号或有符号整数运行。如果硬件提供64位寄存器和整数运算那么好 - 编译器将直接使用它们。如果硬件只有32位寄存器(或16位或8位),则编译器和运行时系统使用软件仿真来完成工作。

答案 1 :(得分:6)

区别不在于您可以使用64位数据类型。不同之处在于可用内存地址空间的大小,以及指向内存的指针所需的大小。在32位操作系统中,你有2 ^ 32字节的可寻址内存空间,你需要32位指针来覆盖它。在64位操作系统中,你有2 ^ 64字节的内存空间来寻址,因此指针必须是64位。

在硬件级别,内部64位数据类型在64位硬件上可能更为理想,因为将有64位寄存器和指令来处理它们。否则,编译器/运行时库将在32位硬件上支持/模拟64位操作。