1

我在网上找到了下面的报价。当指针不是规范地址形式时,是否可以禁用一般保护异常?我在想我的应用程序,如果我可以使用指针的高 4 位来保存额外数据(例如,如果红黑树中的节点是红色或黑色),那就太好了

尽管实现可能不会使用虚拟地址的所有 64 位,但它们会通过实现的最高有效位检查第 63 位,以查看这些位是全零还是全一。符合此属性的地址称为规范地址形式。如果虚拟内存引用不是规范形式,则实现会导致一般保护异常或堆栈错误

4

1 回答 1

4

我不相信。我从未听说过这样的功能,并且浏览英特尔手册以寻找“规范”的匹配项并没有发现任何问题。我认为它本质上是硬连线的。

请注意,该架构保留了未来实现使用更多位的权利,例如英特尔的 5 级分页 CPU 从 48 位规范地址移至 57 位规范地址。因此,如果这是可能的,任何使用过多高位的程序都将面临与未来 CPU 不兼容的风险。CPU 制造商对确保前向兼容性很感兴趣,因此他们会抑制提供您想要的功能。

于 2020-11-24T07:23:30.613 回答