我不知道这是否是一个愚蠢的问题,但我找不到任何答案。
随着 CPU 架构的演进,寄存器的大小从 8 位扩展到 16 位、32 位,最后是 64 位。我想知道是否有任何方法可以访问寄存器的较高部分。
下面是一个关于rax
64 位寄存器及其后续划分的示例:
6 3 1
4 2 6 8 1
+------------------------------+---------------+-------+-------+
| rax |
+------------------------------+---------------+-------+-------+
(???) | eax |
+---------------+-------+-------+
(???) | ax |
+-------+-------+
| ah | al |
+-------+-------+
ax
通过分别引用ah
和 ,可以轻松访问 的较高部分和较低部分al
。但是我找不到任何关于更高部分rax
和eax
更高部分的参考。(用 表示(???)
)
- 是否可以访问 32 位和 64 位寄存器的较高部分?如果有,是哪些?
- 假设不可能,这背后的原因是什么?
注意:我说的是直接访问这些字节,我不是要求可以检索它们的指令序列。