汇编-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位模式的状态标志是相同的。

 

 

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(326)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
历史上的今天:
2021-11-01 蓝牙麦克风
2020-11-01 qt中使用C++thread
点击右上角即可分享
微信分享提示

目录导航