introducing to computer systems病史研究:5.1部分

Introducing to computer systems

(计算机系统概论)

第五章 LC-3结构
第一部分

What do we need to do to run the LC-3?

5.1 ISA(第八第九章会讲到了)(其实这块跳过就好了)
ISA向以机器语言编程的程序员提供有关控制机器所需要的所有必要信息。另外,面向专业的系统编程ISA还将定义更详细的机器相关信息。如高级信息(如C、Pascal、Fortran、COBOL)编译器的开发者需要知道一些“窍门”,才能将高级语言翻译成高效的机器语言。
ISA给出了内存组织方式、寄存器组、指令集(包括操作码、数据结构、寻址模式)等信息。
5.1.1 内存组织
LC-3是一个字寻址机器(word-addressable)。LC-3中Data的处理基本单位是16位,所以16位即为一个“字”
其实这16bit(65535),空间并不是完全用于内存。
5.1.2 寄存器
由于从内存中获取数据的速度很慢(不止一个周期),所以LC-3和大多数机器一样,还提供了临时储存空间,它的访问速度是一个周期。(就想成他只能运算一遍就行了)。
说白了其实就是一个进行操作的临时储存空间,每组寄存器中的每个寄存器被称为通用寄存器(General Purpose Register,GPR)

寄存和内存特性一样的:
(1)记忆性。寄存中的data可以被再次取用出来(STR和LDR指令后面会讲到),内存和寄存中的存储大小都是一个“字”,就是16位
(2)独立寻址:每个寄存器有不同的标识:LC-3中的寄存器仅有八个GPR//那么也就是说只要用三位的二进制数就可以表示出来寄存器的位置。用我们的符号表示就是R0,R1,R2…,R7。
introducing to computer systems病史研究:5.1部分_第1张图片
这就是一个寄存器喽
接下来来举个栗子:introducing to computer systems病史研究:5.1部分_第2张图片
这个其实是写在memory里面的,我们可以简单写成这样子:
ADD R2,R0,R1
它的意思就是将R0和R1中的Data相加并存到R2中去。
原本R0中的数据为:
0000 0000 0000 0001
R1中的数据为:
0000 0000 0000 0011
R2中的数据为:
0000 0000 0000 0101
在进行了这一条ADD的指令过后,
R0中的数据为:
0000 0000 0000 0001
R1中的数据为:
0000 0000 0000 0011
R2中的数据为:
0000 0000 0000 0100
也就是说你不用考虑R2中原本的数据为多少,你只是要用运算过后的结果替代进去就好了。这只是做了一个简单的1+2=3.

5.1.3 指令集
一条指令,就如同上文提到的ADD指令,分为两个部分:
操作码(做什么)和操作数(对谁操作)
introducing to computer systems病史研究:5.1部分_第3张图片
ADD(0001)就是操作码,操作数就是其他部分。
5.1.4 操作码
LC-3的ISA总共有十五条指令:
可以分为:运算(operate),数据搬迁(data movement)和控制(control)三种
运算类指令:可以通过加法来实现数据之间的运算//LC-3仅能实现加法的运算,所以我们减法就是加负数,乘法就是连加,除法就是减去一半。(更多的后面会讲到)
数据搬迁类指令:负责在memory和register之间搬迁数据。
控制类指令:负责跳转地址。
以下是LC-3所有的指令:
introducing to computer systems病史研究:5.1部分_第4张图片
attention:+表示该指令将改变条件码
5.1.5 数据类型
ISA的操作码能够识别/处理某种数据类型所表示的信息,我们称ISA支持这种数据类型,在《计算机系统概论》的第二章中讲到了LC-3所支持的唯一数据类型:补码整数。
5.1.6 寻址模式
说白了,这就是寻找地址的一种操作,数据可能存在的地方:
寄存器中,内存中,指令中。
故LC-3支持五种寻址模式:
立即数,寄存器以及三种内存寻址模式:相对寻址(PC-relative),间接寻址(indirect),基址偏移(Base+offset)。
在5.2以及5.3节中将会讲到的。
5.1.7 条件码
例如BR指令中的nzp,负数为n,零为z,正数为p。
在5.4节中将会继续讲到。

你可能感兴趣的:(计算机系统概论病史解读,编程语言)