【计算机组成原理】指令系统体系结构

前言

指令系统其实就是软件和硬件之间的约定。比如,硬件工程师按照某个指令集合设计好CPU,软件程序员同样遵循该指令集合来编写代码,并写入到存储器中,然后CPU自动的读取指令,译码,执行。

x86体系结构

x86有很多代CPU,这里只介绍16位的8086,之后出现的80386等等都是对字长的扩展,以及增添了几个寄存器,而指令集合也都是向前兼容的。

8086CPU

里面有哪些寄存器

标志寄存器的内部

一个简单的例子

这个例子如果看懂了,就知道这是一个16进制的加法运算,而且两个操作数的长度还得是一样的。下面来讲一下其中重要的细节。

  • 这个存储器是以字节为单位的(8 bit),而CPU寄存器是16位的(word = 16 bit),也就是说CPU从存储器里取数的时候一次要取两个字节。例如,MOV AX, [SI],这里AX中的数将会是8888H
  • CLC清零标志位CF。
  • ADC加法运算的时候会将进位也加进去。
  • 两条INC SI不能改成ADD SI 2,因为ADD会影响标志位CF。
  • JNZ会判断前一条语句的结果是否为0。利用了标志寄存器中的ZF位。
  • 最后三句是为了将最后一个进位加到结果中去。

一个复杂的例子

这个例子是利用MOVSBREP来执行串操作,也就是一整块数据的传输,这个操作对编写代码带来了便利。其中的细节。

  • DS段寄存器中存了基址,然后前两句MOV是把DS的内容放到ES中去了。
  • 接下来两条MOV,把源串的偏移地址存到SI,目标串的偏移地址存到DI。
  • CLD。将会把标志寄存器中的DF位设置为0,即表示从源串的低地址开始传送。(STD的作用与之相反)
  • CX寄存器,存的数是表示重复的次数,下面REP前缀修饰的MOVSB操作,执行的时候会自动将CX减1。

MIPS体系结构

MIPS是精简指令系统(RISC)的经典代表,是RISC的先驱。它的设计理念是减少指令数量,降低指令复杂度。它的基本原则是:a simpler CPU is a faster CPU

它的主要特点:

  • 固定的指令长度。
  • 简单的寻址模式。
  • 指令数量少,功能简单。一个指令只做一件事。
  • 只有Load和Store可以访问存储器。

相比x86指令集的数千页文档,MIPS只要两页就能说清了。

MIPS的简介

MIPS指令可以分为R,I,J型指令。大概介绍一下

R型指令

寄存器型指令。opcodefunct都是指令类型相关的位;rs,rt,rd分别是源操作数,目标操作数,结果;shamt用于指定移位指令进行的移位位数,MIPS字长为32位,所以这里5位就刚好够了。举例:add t0, t1, t2

I型指令

立即数型指令。值得注意的是,我们知道16位的立即数能表示正负2^15字节的偏移量,但是MIPS是固定32位指令的,也就是说它们在存储器中是4字节对齐的,所以它实际表示的字节偏移量是正负2^17,即正负2^15字长(32 bit)的偏移量。举例:addi t0, t1, 5

J型指令

非条件跳转指令。j lable 这种,其中26位都用来存目的地址的值。

你可能感兴趣的:(Component)