本文面向考研和计算机组成原理考试,主要叙述考点。
计算机硬件
按照冯诺依曼结构,硬件分为五部分:输入输出(IO)、运算器、控制器和存储器。
一般指令执行的过程可以分为四个阶段:(1)取指令,即从主存中取出指令(2)指令译码,即将指令送入控制单元进行分析(3)执行指令,即执行译码得知的指令要进行的具体操作。这一过程需要访问MAR,MDR和ACC。(4)中断周期,这是用来响应中断的。(注,这里的指令周期分为四部分是广义上的。实际细化指令会有多种情况,例如五段MIPS。且指令的段数设计要考虑的问题十分复杂,不仅要结合计算机的体系结构,还要考虑各种性能问题,例如流水线)
【考点1】对应设备属于哪一类硬件
输入输出:键盘、鼠标、显示器等等外设都是IO设备。
存储器:包括主存和外存,以及CPU中的MAR和MDR。主存、MDR、MAR涉及到地址,存储单元中包含着操作数等信息,故属于存储器,在指令各阶段都很重要。
运算器:执行指令时的重要部件,负责各种加减乘除、逻辑运算等操作。因此涉及到的部件有通用寄存器组、暂存寄存器(或者是累加寄存器),乘商寄存器(MQ),操作数寄存器、变址寄存器、基址寄存器,状态字寄存器(PSW) 有PSW的原因是在数字运算时可能涉及到溢出、进位、借位等操作,故需要PSW判断。
控制器:负责执行指令,使计算机可以不断运行,即负责计算机对指令的调度,因此有PC、IR和CU(控制单元)。注意,PC是下一条执行指令的地址,IR存储的是具体的指令。
例题
【选D】,IR存储指令,而PC是指令的地址。
计算机软件
即硬件上的负责计算机正确且高效运行的软件。有OS、DBMS、分布式、标准库程序、服务性程序等。
考点2:不同类型的语言
(1)机器语言,即01字符串,只有机器看得懂。且是机器唯一可以直接识别的语言。
(2)汇编语言,用一定的英文词汇代替了晦涩的字符串,更容易记忆。
(3)高级语言,即C、C++等。高级语言可以分为编译型语言和翻译型语言。
编译型语言
1.只须编译一次就可以把源代码编译成机器语言,后面的执行无须重新编译,直接使用之前的编译结果就可以;因此其执行的效率比较高;
2.编译性语言代表:C、C++;
3.程序执行效率比较高,但比较依赖编译器,因此跨平台性差一些; 解释型语言
1.源代码不能直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行;
2.程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次;
3.解释性语言代表:Python、JavaScript
4.运行效率一般相对比较低,但是部分解释性语言的解释器通过在运行时动态优化代码,甚至能使解释性语言的性能超过编译性语言;
5.依赖解释器,跨平台性好;
考点三 源程序到可执行文件的过程
由于计算机无法直接理解和执行高级语言程序,需要将高级语言程序转换为机器语言程序,通常把进行这种转换的软件系统称为翻译程序。翻译程序有以下三类:
1)汇编程序(汇编器)。将汇编语言程序翻译成机器语言程序。
2) 解释程序(解释器)。:将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
3)编译程序 (编译器)。将高级语言程序翻译成汇编语言或机器语言程序。
而一个源程序到可执行文件的过程就需要上述的翻译程序。
预处理:将头文件加入程序文件。
编译:将高级语言转变为汇编语言
汇编:将汇编语言转变为机器语言
连接、重定位:连接是将函数库和目标文件合并为可执行文件。重定位即重新加载,即保证运行时程序地址的正确性。例如:在未重定位之前,有一个跳转指令为:
//程序起点在0行
jmp 100
但放入内存中,位置就可能不是100(100是相对于程序内的100这个位置,但在内存中很可能出现偏移)
因此重定位可能会改为:
//程序起点在内存中为900行
jmp 1000
例题
【选D】一边翻译一边执行的是翻译程序,将汇编转为机器语言的是汇编。对于编译,是高级语言到汇编。
【选C】A是汇编到机器语言,B是将函数库和目标文件打包。D是将一句高级语言转换为机器语言,并执行一句。均错误。C是将高级语言转换为机器语言或者汇编语言,故选C
【选A】不赘述。
总结:
指令的内容放到第四章详细叙述。