我无法理解这个图像,它解释了英特尔X86-64处理器中的IDTR。

IDT基本入口大小为64,我完全理解,因为它可以是,几乎是内存中的任何地方的。
但是,为什么IDT限制是16位呢?为什么我们需要这些小东西?
每个向量的大小是16,有256个向量,所以我需要表示的最大加法是16*256=4096,它可以用12位而不是16位完成。
发布于 2021-05-18 14:56:14
首先,请记住,这种机制可以追溯到32位80386,其中lidt将加载32位基和16位限制。
我认为使用16位限制有两个理由,即使12位就足够了:
lidt采用与lgdt相同格式的基/限制对(实际上,这两条指令都记录在英特尔手册中的同一页上)。lgdt确实需要一个16位的限制,因为全局描述符表最多可以是64 K字节,对应8K条目,每个条目8字节(同样适用于32位计算机)。这个数字的选择是明确的,这样一个16位的选择器,对应于8086的16位段寄存器,可以被用作GDT的字节索引,在屏蔽了它的低3位后,用于在LDT/GDT之间进行选择并指定请求者特权级别。
对这两种指令使用相同的格式可能会允许它们之间共享微码,从而稍微降低了80386的成本和复杂性。https://stackoverflow.com/questions/67586556
复制相似问题