如何解决在此x86-64指令编码文档中,拥有8、16、32、64位GPR有什么用?
我正在(缓慢而痛苦地)学习有关x86-64指令和found this chart in the documentation I'm reading的信息:
我认为“ GP”是指GPR(通用寄存器) 我“了解” x86-64的寄存器结构是这样的:
因此,我对此的第一个理解是,64位系统在CPU中为GPR分配了64位缓存,并且可以处理更大的寄存器值,而32位寄存器充当了与处理器兼容的后备方式。仅分配32位给GPR,依此类推,直到理论上的8位处理器(或者可能存在)。
但是我也想知道这是否是一种在不需要更高精度的情况下将较少的位写入寄存器的方式,从而可以更高效或更快速地运行。
但是看那顶表,似乎由于xReg列为GPR段的每个类别分配了一个二进制值(0000
=> AL,AX,EAX,RAX等)似乎已经提前决定了一种特定的操作模式,并且开发人员无法使用所有不同的寄存器大小。还是指令中还有其他位定义正在使用哪种模式?
多个寄存器大小的目的是什么?它与64位CPU仅使用64位寄存器的各种CPU GPR大小兼容吗?还是要写较小的寄存器值以提高效率?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。