用标记数据填充x86_64指针的前16位? [英] Filling x86_64 Pointers Top Sixteen Bits With Tag Data?

查看:79
本文介绍了用标记数据填充x86_64指针的前16位?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于当前的x86_64实现只能具有48位的虚拟地址空间来降低MMU的复杂性,因此可以使用前16位来实现安全标签数据。当前的实现是否限制了这种用法(即使知道IP和其他段寄存器都是完整的64位),并且将指针的高16位限制为仅包含虚拟地址而不包含其他数据?

Since current x86_64 implementations are only capable of a forty eight bit "virtual" address space to reduce MMU complexity, could the top sixteen bits be used to implement security tag data. Do the current implementations restrict this (even know the IP and other segment registers are a full sixty four bits) usage and restrict the top sixteen bits of pointers to only contain virtual addresses and not other data?

推荐答案

不,您不能。当前要求前16位必须全部相同(例如 0x0000… 0xffff…)—地址如下不适合此模式将始终导致故障。将来的修订版可能在此范围内具有实际地址空间,因此将这些位用于标记并不安全。

No, you cannot. The top 16 bits are currently required to all be the same (e.g, 0x0000… or 0xffff…) — addresses which do not fit this pattern will always cause a fault. Future revisions may have "real" address space in this range, so it's not safe to use these bits for tags.

这篇关于用标记数据填充x86_64指针的前16位?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆