第二章 计算机的语言

上传人:今*** 文档编号:108417965 上传时间:2019-10-23 格式:PPT 页数:113 大小:2.40MB
返回 下载 相关 举报
第二章 计算机的语言_第1页
第1页 / 共113页
第二章 计算机的语言_第2页
第2页 / 共113页
第二章 计算机的语言_第3页
第3页 / 共113页
第二章 计算机的语言_第4页
第4页 / 共113页
第二章 计算机的语言_第5页
第5页 / 共113页
点击查看更多>>
资源描述

《第二章 计算机的语言》由会员分享,可在线阅读,更多相关《第二章 计算机的语言(113页珍藏版)》请在金锄头文库上搜索。

1、Chapter 2,指令: 计算机的语言,Chapter 2 Instructions: Language of the Computer 2,指令集,一台计算机的全部指令 不同计算机有不同的指令集 但有许多共同的方面 早期计算机有很简单的指令集 实现简单 许多现代计算机也有简单指令集 例如:ARM系列计算机(RSIC),2.1 Introduction,Chapter 2 Instructions: Language of the Computer 3,MIPS指令集,用于编写书中的例子使用的是MIPS语言 斯坦福大学的MIPS来自MIPS公司 () 在嵌入式处理机市场中占有很大的份额 广泛

2、地应用在家用电器、网络/存储设备,照相机,打印机 许多现代指令集的代表 参见MIPS参考数据卡和附录B和E。,Chapter 2 Instructions: Language of the Computer 4,算术运算操作,加法和减法,都是三操作数 两个源操作数,一个目的操作数 add a, b, c # a = b + c 注释用#开头 所有的算术运算都是这样的形式 设计原则一:简单源于规整 规整使实现简单 简单能获得低成本高性能,2.2 Operations of the Computer Hardware,Chapter 2 Instructions: Language of the

3、Computer 5,算术操作例子,C 语言的语句: f = (g + h) - (i + j); 编译成MIPS代码: add t0, g, h #临时变量t0 = g + h add t1, i, j #临时变量t1 = i + j sub f, t0, t1 # f = t0 - t1,Chapter 2 Instructions: Language of the Computer 6,寄存器操作数,算术运算指令使用寄存器操作 MIPS有32个32位 寄存器 用于存储频繁使用的数据 编号0 到31 32位数码称为一个字 编译时名称的约定 $t0, $t1, , $t9 表示临时寄存器 $

4、s0, $s1, , $s7 用于存储变量 设计原则二:越少越快 对照主存:数以百万计的存储位置,2.3 Operands of the Computer Hardware,Chapter 2 Instructions: Language of the Computer 7,寄存器操作数举例,C 语言编写的代码: f = (g + h) - (i + j); f, , j in $s0, , $s4 编译成MIPS代码: add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1,Chapter 2 Instructions: Language

5、of the Computer 8,存储器操作数,主存可以存储复杂数据 数组,结构,动态数据 使用算术运算操作数 从主存把数读入到寄存器 把结果从寄存器存储到主存 存储器按字节编址 每个地址表示一个8位字节 按字存放在内存 每个地址必须是4个字节 MIPS按大端编址 高位存放在低地址 对照小端模式:低位放到低地址,如果将一个16位的整数0x1234存放到一个短整型变量(short)中。这个短整型变量在内存中的存储在大小端模式由下表所示。,Chapter 2 Instructions: Language of the Computer 9,存储器操作数举例1,C code: g = h + A8

6、; g 在 $s1, h 在 $s2, A的基址在 $s3 编译成MIPS代码: 小标8(数组第8个分量)需要32的偏移 每个字对应4个字节 lw $t0, 32($s3) # load word add $s1, $s2, $t0,偏移量 offset,基址寄存器 Base register,Chapter 2 Instructions: Language of the Computer 10,存储器操作数举例2,C code: A12 = h + A8; h in $s2, base address of A in $s3 Compiled MIPS code: Index 8 requi

7、res offset of 32 lw $t0, 32($s3) # load word add $t0, $s2, $t0 sw $t0, 48($s3) # store word,Chapter 2 Instructions: Language of the Computer 11,寄存器和主存储器,寄存器的访问速度比主存快得多 对主存储器数据的操作要用 取数指令lw (load word) 存数指令sw (store word)。 需要执行更多的指令 编译器必须尽量使用寄存器访问变量 仅当寄存器不够用时才把不经常使用的变量放到内存; 寄存器的高效利用对系统优化非常重要。,Chapter

8、2 Instructions: Language of the Computer 12,常数或立即数操作数,指令中使用常数 addi $s3, $s3, 4(immediate) 没有减去立即数的减法指令 可以使用负常数,即“加负数”实现减法 addi $s2, $s1, -1 设计规则三:加速执行常用操作 小常数操作出现的频率高 立即数操作不用到内存取数,Chapter 2 Instructions: Language of the Computer 13,常数零,MIPS寄存器0($zero)表示常数0 不能被改写 在常用的操作中,很有用 例如,可在寄存器之间传送数据 add $t2, $

9、s1, $zero,常用的寻址方式,寄存器型:直接、间接; 存储器型:直接、间接; 计算型:相对、基址、变址; 立即数型;,Chapter 2 Instructions: Language of the Computer 15,二进制无符号整数,给定一个n位数,范围: 0 to +2n 1 举例 0000 0000 0000 0000 0000 0000 0000 10112 = 0 + + 123 + 022 +121 +120 = 0 + + 8 + 0 + 2 + 1 = 1110 32位数 0 to +4,294,967,295,2.4 Signed and Unsigned Numb

10、ers,Chapter 2 Instructions: Language of the Computer 16,二进制补码表示有符号整数,x是一个n位数,范围: 2n 1 to +2n 1 1 举例 1111 1111 1111 1111 1111 1111 1111 11002 = 1231 + 1230 + + 122 +021 +020 = 2,147,483,648 + 2,147,483,644 = 410 32位数 2,147,483,648 to +2,147,483,647,Chapter 2 Instructions: Language of the Computer 17,

11、二进制补码表示有符号整数,31位是符号位 1表示负数 0表示非负 (2n 1) 不能表示 非负数的无符号数和二进制补码是相同的 一些特殊的数 0: 0000 0000 0000 1: 1111 1111 1111 绝对值最大负数: 1000 0000 0000 最大正数: 0111 1111 1111,Chapter 2 Instructions: Language of the Computer 18,有符号数(二进制补码)的取反,取反加1 取反的含义1 0, 0 1,举例:对+2的求反 +2 = 0000 0000 00102 2 = 1111 1111 11012 + 1 = 1111

12、1111 11102,Chapter 2 Instructions: Language of the Computer 19,符号扩展,使用更多的位表示一个数 数值保持不变 在MIPS指令集中 addi: extend immediate value扩展到立即数 lb, lh: extend loaded byte/halfword 扩展到取字节/半字 beq, bne: 扩展到跳转后的位置extend the displacement 相等/不相等跳转 复制符号位到左侧 对照无符号数:用0扩充 举例: 8-bit to 16-bit +2: 0000 0010 = 0000 0000 000

13、0 0010 2: 1111 1110 = 1111 1111 1111 1110,Chapter 2 Instructions: Language of the Computer 20,指令表示,指令用二进制编码 称为机器代码 MIPS 指令 32位指令字编码 指令格式中若干字段分别用于表示操作码, 寄存器编号, 非常规整 寄存器编号【参考教材71页图2-14】 $t0 $t7 are regs 8 15 $t8 $t9 are regs 24 25 $s0 $s7 are regs 16 23,2.5 Representing Instructions in the Computer,指令

14、格式的演变,肆地址指令; 三地址指令; 二地址指令; 一地址指令; 零地址指令。 地址的显式和隐含式,Chapter 2 Instructions: Language of the Computer 22,MIPS中寄存器指令,指令字段 op: 操作码(opcode) rs: 第一个源寄存器编号 rt: 第二个源寄存器编号 rd: 目的寄存器编号 shamt: 移位位数(00000 表示不移位) funct: 功能码(扩展操作码) (extends opcode),Chapter 2 Instructions: Language of the Computer 23,R-型(寄存器)操作举例,

15、add $t0, $s1, $s2,special,$s1,$s2,$t0,0,add,0,17,18,8,0,32,000000,10001,10010,01000,00000,100000,000000100011001001000000001000002 = 0232402016,Chapter 2 Instructions: Language of the Computer 24,十六进制,基底是16 二进制串的压缩表示(使用16进制的原因) 四位二进制组成一个十六进制数,Example: eca8 6420 1110 1100 1010 1000 0110 0100 0010 000

16、0,Chapter 2 Instructions: Language of the Computer 25,MIPS I型(立即数指令),立即数的算术和读数/存数指令 rt: 目的或源寄存器编号 常数的取值范围: 215 to +215 1 地址:偏移加上rs中的基址 设计原则4:优秀的设计需要适宜的折中方案 不同类型指令采用不同的解码方式,但都是32位相同的指令长度 尽可能保持相似的指令格式,指令格式举例1,如果数组A的基址放在$t1中,h存放在$s2中,这C语言写的语句: A300=h+A300编译成汇编语言,则为: lw $t0, 1200($t1) # $t0=A300 Add $t0, $s2,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号