1# 解释编译器的作用。“编译”和“编辑”不同之处在哪里?
作用:编译器的作用是将高级语言程序转换成转换成一种称为目标文件的二进制文件,再经过链接,生成可执行代码。
编辑是指对一个文件,进行录入、修改的过程,录入的文字、代码等是直接可见的。视化以前的开发环境下,主要是指代码的输入、编辑。
2# 链接在生成可执行文件时的作用是什么?
是将汇编或编译生成的目标文件,与系统提供的静态库或者动态库,链接成可执行文件。
3# 高级语言主要是人们编程使用方便,机器指令主要是计算机能直接识别,汇编语言起到什么作用?
因为机器语言是二进制编码的,不易被人识别和记忆,汇编语言是每条机器语言对应的符号表示的语言,容易被人理解和记忆。
4# 不同厂商生产的CPU,对应的汇编语言是否相同?为什么?
不相同。
汇编语言都和CPU的设计结构一致,和机器码一一对应,不同的CPU结构千差万别,同一个厂商不同阶段或系列的CPU使用的汇编都有所不同。
5# 当我们在同一台机器使用不同的高级语言编写程序时,最终生成的可执行代码,其用到的指令集(ISA)是否相同?解释理由。
相同。
因为不同的高级程序设计语言最终都要转换成机器指令程序,同一台机器的指令集是不变的,所以用到的ISA是相同的。
6# 说明在PEP/9虚拟机中,如果二进制指令如下,请解释其含义:
- 1111 0001
0000 0011 0001 0011
将寄存器A里数据(一个字节)存到地址0313的内存单元
- 0111 0000
0000 0011 0001 0011
从寄存器A里的数据减去操作数0313,结果保存到A里
- 0110 0001
0000 0011 0000 0001
将地址0301里的数据加到寄存器A的数据里,结果保存到A里
7# 解释以下MIPS指令集汇编程序,每一句的含义
main:
ADDI $r2,$r0,1024 将R0的数据与立即数1024进行相加,保存到R2里
ADD $r3,$r0,$r0 将R0的数据与R0数据进行相加,保存到R3里
ADDI $r4,$r0,8 将R0的数据与立即数8进行相加,保存到R4里
loop:
LW $r1,0($r2) 0加上R2寄存器里数据作为地址取数据一个字,并存到R1。也可以写: R1← MEM(0+REG[R2])
ADDI $r1,$r1,1 将R1的数据与立即数1进行相加,保存到R1里
SW $r1,0($r2)) 0加上R2寄存器里数据作为地址,并将R1里的一个字数据保存到这个地址单元。也可以写:MEM(0+REG[R2]) ←R1
ADDI $r3,$r3,4 将R3的数据与立即数4进行相加,保存到R3里
SUB $r5,$r4,$r3 将R4的数据与R3进行相减,保存到R5里
BGTZ $r5,loop 如果R5大于0,则跳转到Loop处指令
ADD $r7,$r0,$r6 将R0的数据与R6数据进行相加,保存到R7里
TEQ $r0,$r0 终止