x86体系架构学习

简介: x86体系架构学习

8086 (实模式)

  • 通用寄存器:AX、BX、CX、DX、SI、DI、BP和SP,此外前4个寄存器可以分成高8位和低8位来访问,AH、AL、BH、BL、CH、CL以及DH、DL
  • 4个16位的段寄存器:CS、DS、SS、ES,其中CS存放指令的段地址,DS和ES存放数据的段地址,默认是DS,要使用ES需要在指令里指明,SS存放栈的段地址
  • 基址寄存器BX用的是DS,基址寄存器BP用的是SS。
  • 基址变址:[BX]、[BX+SI]、[BX+DI]、[BP]、[BP+SI]、[BP+DI]
  • 不支持将数据直接使用mov的方式送入段寄存器,比如mov ds,1000H,需要通过一个通用寄存器来进行中转
  • “段地址x16+偏移地址=物理地址”含义:CPU在访问内存时,用一个基础地址(段地址x16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
  • 正确理解段地址:内存并没有分段,段的划分来自于CPU,由于8086用“基础地址(段地址x16)+ 偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存
  • 由于乘以16的缘故,基础地址总是16字节对齐的
  • 任意时刻,CPU将CS:IP指向的内容当作指令执行
  • 上电后,CS的初始值为0xFFFF,IP的默认值为0x0000,所以CPU从内存0xFFFF0读取指令执行
  • CS和IP的值不能通过mov来修改,需要通过转移指令,如“jmp 段地址:偏移地址”
  • 执行mov ax, [2] 表示: 将 ds x 16 + 2 这个内存单元的值读到ax寄存器中
  • 在任意时刻,SS:SP指向栈顶元素,执行push ax时,首先SP=SP-2,然后将ax中的内容送入SS:SP指向的内存单元处,此时SS:SP指向新栈顶。pop的过程与之相反。

IA-32 (保护模式)

  • 通用寄存器:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP
  • 段寄存器不再存放段基地址,而是段的选择子或者段选择器,即用于选择所要访问的段
  • 逻辑地址:段地址:偏移地址
  • 线性地址:段地址x16 + 偏移地址
  • 虚拟地址:逻辑地址和线性地址都是虚拟地址的表现形式
  • 物理地址:实模式和非分页保护模式下就是线性地址,分页保护模式下需要经过MMU将线性地址转换为物理地址
  • 在保护模式下,对内存的访问仍然使用段地址和偏移地址,但是在每个段能够访问之前,必须先进行登记。登记的信息包括:段的起始地址、段的界限等各种访问属性。每个登记信息占用8字节,称为段描述符,每个段都需要一个描述符。描述符存放在一段内存中,这段内存中,所有的描述符都挨在一起,集中存放,构成了一个描述符表。
  • 最主要的描述表是全局描述符表GDT,进入保护模式前,必须要定义全局描述符表。全局描述符表寄存器GDTR,这个寄存器为48位,高32位保存全局描述符表在内存中的起始线性地址,低16位表示全局描述符表的边界(界限),其数值上等于表的大小(总字节数)-1. 所以全局描述符表最大为64KB,最多容纳8192个描述符。
相关文章
|
3月前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
819 3
|
4月前
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
79 0
|
25天前
|
Docker 容器
docker:记录如何在x86架构上构造和使用arm架构的镜像
为了实现国产化适配,需将原x86平台上的Docker镜像转换为适用于ARM平台的镜像。本文介绍了如何配置Docker buildx环境,包括检查Docker版本、安装buildx插件、启用实验性功能及构建多平台镜像的具体步骤。通过这些操作,可以在x86平台上成功构建并运行ARM64镜像,实现跨平台的应用部署。
423 2
|
28天前
|
存储 固态存储 安全
阿里云服务器X86计算架构解析与X86计算架构云服务器收费价格参考
阿里云服务器架构分为X86计算、Arm计算、高性能计算等多种架构,其中X86计算是用户选择最多的一种架构,本文将深入探讨阿里云X86计算架构的云服务器,包括其技术特性、适用场景、性能优势以及最新价格情况。
|
1月前
|
存储 缓存 数据处理
简述计算机X86架构
【10月更文挑战第3天】本文介绍了计算机的基本工作原理,重点阐述了CPU(中央处理器)及其组成部分:运算单元、数据单元和控制单元的功能。文中解释了CPU通过总线与内存等设备通信的过程,并详细描述了指令执行的步骤,包括指令获取、数据处理和结果存储。此外,还介绍了地址总线和数据总线的作用,以及段寄存器在内存管理中的应用。最后,提供了一些基本的CPU指令示例。文中配有多幅插图帮助理解。
|
1月前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器计算架构X86/ARM/GPU/FPGA/ASIC/裸金属/超级计算集群有啥区别?
阿里云服务器ECS提供了多种计算架构,包括X86、ARM、GPU/FPGA/ASIC、弹性裸金属服务器及超级计算集群。X86架构常见且通用,适合大多数应用场景;ARM架构具备低功耗优势,适用于长期运行环境;GPU/FPGA/ASIC则针对深度学习、科学计算、视频处理等高性能需求;弹性裸金属服务器与超级计算集群则分别提供物理机级别的性能和高速RDMA互联,满足高性能计算和大规模训练需求。
|
2月前
|
Cloud Native Java 编译器
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
随着云计算技术的不断发展,云服务商们不断推出高性能、高可用的云服务器实例,以满足企业日益增长的计算需求。阿里云推出的倚天实例,凭借其基于ARM架构的倚天710处理器,提供了卓越的计算能力和能效比,特别适用于云原生、高性能计算等场景。然而,有的用户需要将传统基于x86平台的应用迁移到倚天实例上,本文将介绍如何将基于x86架构平台的应用迁移到阿里云倚天实例的服务器上,帮助开发者和企业用户顺利完成迁移工作,享受更高效、更经济的云服务。
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
|
2月前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
66 18
|
3月前
|
机器学习/深度学习 算法 数据库
阿里云服务器架构区别解析:从X86计算、Arm计算到高性能计算架构的区别参考
在我们选择阿里云服务器的架构时,选择合适的云服务器架构对于提升业务效率、保障业务稳定至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供参考和选择。
阿里云服务器架构区别解析:从X86计算、Arm计算到高性能计算架构的区别参考
|
2月前
|
缓存
计算机X86架构
【9月更文挑战第7天】计算机的基本工作原理,重点阐述了CPU(中央处理器)及其内部结构,包括运算单元、数据单元和控制单元的功能。文中还解释了内存、总线(地址总线和数据总线)的作用,并简述了x86架构与操作系统交互的关键部分及基本指令集。