CPU的相关知识

Intel

IntelCPU分为32位和64位,32位CPU称为IA32,64位CPU称为IA64。

基本执行环境

IA32的基本执行环境

基本寄存器:

8个32位的通用寄存器,EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP
6个16位的段寄存器,CS、DS、SS、ES、FS、GS
1个32位的EFLAGS寄存器,EFLAGS
1个32位的指令指针寄存器,EIP

FPU寄存器:

8个80位的浮点数寄存器,ST0~ST7
1个16位的控制寄存器
1个16位的状态寄存器
1个16位的标签寄存器
1个11位的操作码寄存器
1个48位的FPU指令指针寄存器
1个48位的FPU数据指针寄存器

MMX寄存器:

8个64位的MMX寄存器,MM0~MM7
XMM寄存器:8个128位的XMM寄存器,XMM0~XMM71个32位的MXCSR寄存器

寻址空间:

0~2^32-1

除此之外,还有其它的寄存器。

控制寄存器

CR0~CR4

系统表指针寄存器

GDTR
LDTR
IDTR

任务寄存器

调试寄存器

MSR寄存器

IA64的基本执行环境

基本寄存器:

16个64位的通用寄存器,RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP、R8~R15
6个16位的段寄存器,CS、DS、SS、ES、FS、GS
1个64位的RFLAGS寄存器,RFLAGS(高32位保留,第32位同FLAGS)
1个64位的指令指针寄存器

FPU寄存器:

8个80位的浮点数寄存器
1个16位的控制寄存器
1个16位的状态寄存器
1个16位的标签寄存器
1个11位的操作码寄存器
1个64位的FPU指令指针寄存器
1个64位的FPU数据指针寄存器

MMX寄存器:

8个64位的MMX寄存器

XMM寄存器:

16个128位的XMM寄存器
1个32位的MXCSR寄存器

地址空间:

0~2^64-1

除此之外,还有其它的寄存器。

控制寄存器

CR0~CR4

系统表指针寄存器

GDTR
LDTR
IDTR

任务寄存器

调试寄存器

MSR寄存器

寄存器用法约定

Intel的CPU指令集中,对寄存器的用途有一套约定用法,大多数指令都遵守这套约定。

段寄存器:

CS: Code Segment     
DS: Data Segment     
SS: Stack Segment  
ES: Data Segment
FS: Data Segment
GS: Data Segment

堆栈:

ESP/RSP: Stack pointer (in the SS segment)
EBP/RBP: Pointer to data on the stack(in the SS segment)

通用寄存器:

EAX/RAX: Accumulator for operands and reulst data
EBX/RBX: Pointer to data in the DS segment
ECX/RCX: Counter for string and loop operations
EDX/RDX: I/O pointer
ESI/RSI: Pointer to data in the segment pointed to by the DS register; source pointer for string operations
EDI/RDI: Pointer to data (or destination) in the segment pointed to by the ES register; destination pointr for string operations

参考

  1. intel architectures-software-developer-manuals

本文原创首发于网站:www.lijiaocn.com

QQ交流群

区块链实践互助QQ群:576555864

Kubernetes实践互助QQ群:947371129

Prometheus实践互助QQ群:952461804

Kong/Envoy实践互助QQ群:952503851

Ansible实践互助QQ群:955105412

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: lijiaocn@foxmail.com,备注网站合作 友情链接: lijiaocn github.com