🗒️计算机组成原理
00 分钟
2024-4-3
2024-11-7
type
status
date
slug
summary
tags
category
icon
password
零位扩展和符号位扩展
1、符号扩展:当用更多的内存存储某一个有符号数时,由于符号位位于该数的第一位,扩展之后,符号位仍然需要位于第一位,所以,当扩展一个负数的时候需要将扩展的高位全赋为1;对于正数而言,符号扩展和零扩展是一样的,因为符号位就是0。
比如一个用一个16位二进制(简单的写成16进制的)表示-1,则是8001
先转到补码,在加运算符(8001的补码是ffff)
如果把这个数用32位二进制表示时,则为ffffffff 高位全都是f,这个叫做符号扩展.
2、零扩展就是全补零。不论其符号位是多少,高8位全都补0.
能过上面的定义可以看出在C++中,如果把一个char向一个整形转换的时候,就会存在着这个问题
如果你想得到一个正数,那么如果一个字符的ASCII码值是小于零的,而直接用(int)c进行强制类型转换,结果是通过符号扩展得到的也为一个负数。要得到正数,一定要用(int)(unsigned char)c;因为unsigned char去除了c的符号位,所以,这样的类型转换后,再用(int)进行转换得到的就是一个正数。
例题:
notion image
notion image
notion image
notion image
 
notion image
notion image
notion image
 
有一种题目是:
假设某计算机的指令长度固定为16位,具有双地址,单地址和无地址3类指令,每个操作数地址规定用6位表示。
  1. 若操作码字段固定,现已设计出14条双地址指令,64条无地址指令,在此情况下,这台计算机最多可以设计出( )条单地址指令。
  1. 若操作码字段不固定,当双地址指令取最大数,且在此基础上,单地址指令条数也取最大值,则双地址指令有( )条,单地址指令有( )条,无地址指令有( )条。
第一题其实对于着里面的第三问
3.采用扩展操作码技术,若二地址指令有P条,零地址指令有Q条,则一地址指令最多有几种?
 
 
某计算机的主存地址空间中,从地址0000H到3FFFH为ROM存储区域,从4000H到5FFFH为保留地址区域,暂时不用,从6000H到FFFFH为RAM地址区域。RAM的控制信号为CS#和WE#,CPU的地址线为A15~A0,数据线为8位的线路D7~D0,控制信号有读写控制R/W#和访存请求MREQ#。 (1) 画出地址译码方案 (2) 如果ROM和RAM存储器芯片都采用8K×1的芯片,试画出存储器与CPU的连接图。
 
对于ROM:容量为:3FFF-0000+0001 = 16K ,位为:D7~D0,8位,所以是16K*8
RAM:容量为:FFFF-6000+0001 = 40K ,位为:D7~D0,8位,所以是40K*8
notion image
 
 
MIPS系统设计之单周期CPU(24条指令)
1.首先确定ALUOP的逻辑表达式,应该是写出全部的指令设计的运算,对这些ALU_OP一一赋值(不对,这玩意好像是约定的,因为在8条指令那里也是这样的),每个ALU_OP对应一个值.下面一个是8条的,一个是24条的。
notion image
notion image
这里有个8条指令的ALUOP设计过程,根据OpCode和FUNCT段直接判断是哪个有效。
notion image
 
 
2.然后就是用24条指令一个个对,获得对应指令的运算,不同操作下的ALU_OP值,如果找不到就是没有,就写“X”。填入下面的表格的框里。
notion image
 
3.填完后会有一个如下的表格,主要是控制信号那里
notion image
notion image
 
 
计算机组成原理复习
 
notion image
notion image
小端模式 数据的低位放在低地址空间,数据的高位放在高地址空间 简记:小端就是低位对应低地址,高位对应高地址
 
下面是存放二进制数:1011-0100-1111-0110-1000-1100-0001-0101
注意注意:我们在存放的时候是以一个存储单元为单位来存放,存储单元内部不需要再转变顺序啦!! 就例如下面的低位0001-0101存放在0号地址,我们不需要把它变成1010-1000,不需要!!不需要!!
 
notion image
读的话就是把读出来的数据往左放,因为是小端。
 
大端如下:
大端模式 数据的高位放在低地址空间,数据的低位放在高地址空间
notion image
读的话就是把读出来的数据往右放,因为是大端。
 
这里有一个知识点就是:内存中是以8位比特也就是1Byte作为一个存储单元,所以对于整型 int 占 4字节,要存放4个存储单元,假设int型变量X的起始地址是0x100,那么它的4个字节存放在0x100,0x101,0x102,0x103这四个地址处
而计算机的字长是用来决定虚拟地址编号的范围的,比如说32位的计算机,那么虚拟地址编号的范围是0-2^32-1;64的就是0-2^64-1。
上一篇
V2Board搭建教程
下一篇
前端3件套学习

评论
Loading...