c++在32/64位系统上使用16位指针

c++ using 16bit pointers on 32/64 bit systems

本文关键字:16位 指针 系统 64位 c++      更新时间:2023-10-16

指针的大小通常等于CPU的"宽度",因此指针通常可以访问每个系统地址。

在64位系统上使用16位指针应该允许在同一个内存区域中容纳4个16位指针和一个64位指针,但是一个16位指针只允许寻址2^16个位置。

我的想法不是关于节省内存,而是关于潜在的性能优势。这个想法基本上是以65635为块分配内存,并使用16位指针来寻址那些"虚拟的"16位地址空间。

这可能吗?我应该尝试这样做吗,也就是说,它会带来性能上的好处吗?

更有可能的是这会影响性能。现代CPU可以轻松访问32位和64位数据宽度。如果你有16位的数据,你需要屏蔽等等来计算CPU中的真实地址。

进一步读取的指针是非对齐访问。

很可能,如果您有一个32/64位系统,它有足够的RAM,那么您的方案的优化好处将被实现它的复杂性所抵消。您需要确保它正确工作,并且您的方案将比直接指针访问慢得多。