机器运行及其“操作手册”设置

  计算机系统运行的核心是 CPU 利用其自身计算单元和控制线,在内置寄存器的协助下,操作 “ 线性地址空间(对 CPU 而言) ” 的过程。X86 架构计算机系统采用 “冯.诺依曼” 结构,指令和数据在统一的地址空间以 “混合排放” 的方式存储,因此,对于 X86 架构 CPU 而言,其只需操作一根 “线性内存” 即可。这一点与哈佛架构完全不同。

20160307

  “唯一” 的 “线性内存” 既要存储指令,也要存储数据,为了更好的管理这一宝贵的资源,X86 架构 CPU 设计许多逻辑概念对 “线性内存“ 进行管理。对内存进行逻辑上 “分段” 管理,即将内存分为许多 “小段”,每个 “小段” 存储内容不同。例如,有些内存段存放代码,即 “代码段”,有些内存段存放数据,即 “数据段”,有的则作为堆栈使用。具体 “线性内存” 各个段中哪个段是代码段、哪个段是数据段、哪个是堆栈段,这个解释权归 CPU 专有,CPU 根据具体运行情况而定。各个内存段处于同一地址空间内,如何对这些用途不同的内存段进行定位(解释)呢?为此,CPU 设置了专门的寄存器来存放不同用途内存段的地址(段地址 + 偏移地址),以此来找到不同用途的内存段。例如,CS 和 IP 标定了当前执行的代码地址,DS 标定了当前使用的数据段地址,SS 和 SP 则标定了当前堆栈栈顶的地址。

  X86 架构的机器指令,即 X86 指令集,作为 CPU 的 “操作手册” ,当然要与 CPU 的特点相适应。X86 指令集中也具备设置处理各个专门寄存器的指令。通过机器语言(或汇编语言)对各个专门寄存器中数值的设定,即可访问各个不同用途内存段,进而达到控制 CPU 指令执行和数据读取的效果。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注