Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pointers 当地址不是标准格式时,是否可以禁用/关闭常规保护异常?_Pointers_Assembly_X86 64_Cpu Architecture_Canonical Form - Fatal编程技术网

Pointers 当地址不是标准格式时,是否可以禁用/关闭常规保护异常?

Pointers 当地址不是标准格式时,是否可以禁用/关闭常规保护异常?,pointers,assembly,x86-64,cpu-architecture,canonical-form,Pointers,Assembly,X86 64,Cpu Architecture,Canonical Form,我在网上找到了下面的报价。当指针不是标准地址形式时,是否可以禁用常规保护异常?我在想,对于我的应用程序,如果我可以使用指针的高4位来保存额外的数据(例如,如果一个节点在红黑树中是红色或黑色的),那就太好了 尽管实现可能不会使用虚拟地址的所有64位,但它们会检查位63到最重要的实现位,以查看这些位是全零还是全一。符合此属性的地址称为标准地址形式。如果虚拟内存引用不是规范形式,则实现会导致一般保护异常或堆栈错误 我不这么认为。我从来没有听说过这样的功能,浏览英特尔手册寻找canonical的匹配项并

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

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


我不这么认为。我从来没有听说过这样的功能,浏览英特尔手册寻找canonical的匹配项并没有发现任何东西。我认为它本质上是硬连接的


请注意,该体系结构保留将来实现使用更多位的权利,例如Intel的5级分页CPU从48位标准地址移动到57位标准地址。所以,如果这是可能的,任何使用太多高位的程序都有可能与未来的CPU不兼容。CPU制造商有兴趣确保前向兼容性,因此他们会抑制提供您想要的功能。

我不这么认为。我从来没有听说过这样的功能,浏览英特尔手册寻找canonical的匹配项并没有发现任何东西。我认为它本质上是硬连接的


请注意,该体系结构保留将来实现使用更多位的权利,例如Intel的5级分页CPU从48位标准地址移动到57位标准地址。所以,如果这是可能的,任何使用太多高位的程序都有可能与未来的CPU不兼容。CPU制造商有兴趣确保前向兼容性,因此他们会抑制提供您想要的功能。

否,恐怕没有MSR或控制寄存器位要求CPU禁用该检查,或者有人会提到它,作为掩蔽掉现有Q&A中标记指针的高位或低位的替代方法:/No,AFAIK没有MSR或控制寄存器位要求CPU禁用该检查,或者有人会提到它,作为一种替代方案,以屏蔽现有Q&A中用于标记指针的高位或低位。规范检查的唯一原因是,它们可以在不破坏程序的情况下扩展虚拟地址空间。他们从其他扩展了地址空间的处理器那里学到了一些东西,比如68000系列从24位地址空间迁移到32位地址空间,这导致了严重的兼容性问题。规范检查的唯一原因是,它们可以在不破坏程序的情况下扩展虚拟地址空间。他们从其他扩展了地址空间的处理器那里学到了经验,比如68000系列从24位地址空间迁移到32位地址空间,这导致了严重的兼容性问题。