gpt4 book ai didi

C 编译器能否生成指针为 32 位的 64 位可执行文件?

转载 作者:太空狗 更新时间:2023-10-29 16:29:22 25 4
gpt4 key购买 nike

大多数程序适合 <4GB 地址空间,但需要使用 x64 架构上可用的新功能。

是否有编译器/平台,我可以在其中使用 x64 寄存器和特定指令,但保留 32 位指针以节省内存?

是否可以在遗留代码上透明地做到这一点?什么开关可以做到这一点?

在保留 32 位指针的同时获得 64 位功能需要对代码进行哪些更改?

最佳答案

避免这种情况的一种简单方法是,如果您所指向的结构只有少数类型。然后您可以为数据分配大数组并使用 uint32_t 进行索引。

因此,此类模型中的“指针”只是全局数组中的索引。通常用一个像样的编译器解决这个问题应该足够有效,并且它会为您节省一些空间。您会失去其他您可能感兴趣的东西,例如动态分配。

实现类似功能的另一种方法是对指针进行编码,使其与实际位置不同。如果您可以确保这种差异始终适用于 32 位,您也可以从中获益。

关于C 编译器能否生成指针为 32 位的 64 位可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4117005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com