AMD64和EM64T是同一种架构,包括两种模式,长模式和保护模式
长模式包括两种子模式,即64位模式和兼容模式,本文只介绍64位模式
64位模式有如下特点:
1.线性地址=有效地址=偏移地址=0,一般禁止分段,采用分页存储模式
页大小有两种,4KB 和2MB,64位线性地址,可实现40位物理地址映射(intel),
或52位物理地址映射(AMD).线性地址必须用规范地址形式表示.
2.应用程序要求重新编译,默认地址尺寸64位,默认操作数32位,加REX前缀
可使用64位操作数,所有扩展寄存器可用.
3.64位模式可用寄存器如下:
8位AL,BL,CL,DL,AH,BH,CH,DH,SIL,DIL,BPL,SPL,R8B--R15B
其中AH,BH,CH,DH使用REX前缀时不可寻址.SIL,DIL,BPL,SPL只有在加REX前缀时可寻址.
16位AX,BX,CX,DX,SI,DI,BP,SP,R8W--R15W
32位EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP,R8D--R15D
64位RAX,RBX,RCX,RDX,RSI,RDI,RBP,RSP,R8--R15
指令指针寄存器64位RFLAGS,只有低32位可用,同EFLAGS,高32位保留,必须是0
指令指针64位 RIP
段寄存器只有CS,FS,GS可用.
128位XMM寄存器XMM0--XMM15
64位MMX寄存器MMX0--MMX7
X87寄存器FPR0--FPR7(80位)
MMX0--MMX7是逻辑上的,是FPR0--FPR7的逻辑映射.
4.系统寄存器如下
控制寄存器
CR0,CR2,CR3,CR4,CR8(64位)
调试寄存器
DR0,DR1,DR2,DR3,DR6,DR7
描述符寄存器
GDTR,IDTR,LDTR
扩展的特性启用寄存器
EFER
系统配置寄存器
SYSCFG
系统链接寄存器
STAR
LSTAR
CSTAR
SFMASK
FS.base
GS.base
KernelGSbase
SYSENTER_CS
SYSENTER_ESP
SYSENTER_EIP
调试扩展寄存器
DebugCtlMSR
LastBranchFromIP
LastBranchToIP
LastIntFromIP
LastIntToIP
存储类型寄存器
MTRRcap
MTRRdefType
MTRRphysBasen
MTRRphysMaskn
MTRRfixn
PAT
TOP_MEM
TOP_MEM2
性能监视寄存器
TSC
PerEvtSeln
PerfCtrn
机器检查寄存器
MCG_CAP
MCG_STAT
MCG_CTL
MCi_CTL
MCi_STATUS
MCi_ADDR
MCi_MISC
5系统数据结构
1)段描述符:包含在描述符表中,包括代码段,数据段,堆栈段,TSS描述符,LDT描述符
2)描述符表:全局描述符表,中断描述符表,局部描述符表.
3)页转换表:4KB,页映射级4-页目录指针-页目录-页表
2MB 页映射级4-页目录指针-页目录
6.特性
64位模式位64位操作系统和应用程序提供完全支持,要求使用全新的64位操作系统和工具链
不支持虚拟8086模式,不支持实模式
支持系统管理模式SMM
物理地址扩展PAE
页尺寸扩展PSE,4KB和2MB
分页数据结构中的每个页表由512项组成
CS基地址字段由处理器忽略
CS界限由处理器忽略
CS中只有L(长),D(默认尺寸),DPL(描述符特权级)字段由处理器使用,其他属性忽略
DS,ES,SS基地址忽略
FS,GS基地址为64位,基地址的此64位映射至MSR寄存器,只能由WRMSR指令装入
页保护检查包括PML4和PDP项中的U/S和R/W保护位
CS,DS,ES,FS,GS,SS段界限检查被屏蔽
LDT,GDT,IDT,TSS保持段界限检查
代码段和数据段都视为可读,可写
新的相对指令指针寻址.
以上是64位模式的简要概述,在接下来的日子里,我将陆续对以上内容做详细解释.