汇编-64位寄存器
在64位模式下,虽然处理器目前只支持48位的地址,但在理论上,地址可大到64位。
从寄存器来看,与32位处理器最主要的区别如下:
●16个64位通用寄存器(在32位模式下只有8个通用寄存器)
●8个80位浮点寄存器
●1个64位状态标志寄存器, 称为R FLAGS(只使用了低32位)
●1个64位指令指针寄存器, 称为RIP
●8个64位MMX寄存器
●16个128位XMM寄存器(在32位模式下只有8个XMM寄存器)
通用寄存器
在描述32位处理器时介绍过通用寄存器,它们是作为算术运算、传送数据和循环遍历数据等指令的基本操作数。
通用寄存器可以访问8位、16位、32位或64位操作数(通过使用特殊前缀)。
在64位模式下,操作数的默认大小是32位,并且有8个通用寄存器。但是,通过给每条指令加上REX(寄存器扩展) 前缀, 操作数的长度可以达到64位, 并且还可以使用总共16个通用寄存器。可使用32位模式下的全部寄存器,再加上8个被编号的寄存器,即R8到R 15。
表2-1展示了在使用REX前缀的情况下可用的通用寄存器。
还有一些需要记住的细节:
在64位模式下,单条指令不能同时访问高字节寄存器(如AH、BH、CH和DH)和新字节寄存器的低字节(如DIL) 。
在64位模式下, 32位EFLAGS寄存器被64位R FLAGS寄存器所取代。这两个寄存器共享相同的低32位, 而RFLAGS的高32位是不使用的。
32位模式和64位模式的状态标志是相同的。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
2021-11-01 蓝牙麦克风
2020-11-01 qt中使用C++thread