【计算机本科补全计划】指令:计算机的语言(MIPS) --计算机组成原理

2018-05-07 16:46:01 浏览数 (1)

正文之前

今天的主题就是,重新学一次汇编语言,不过总感觉跟单片机的汇编语言没啥差别,不过就是地址变宽,然后一些限制多了不少,因为计算机要进行大量的运算,所以更加全面并且更加开阔吧,毕竟单片机只是嵌入式常用,属于比较低端的,不过操作其实差不多,幸甚至哉~~


正文

1、要让计算机服从指挥,就必须要有计算机的语言,计算机语言的基本单词称之为指令,一台计算机的所有指令称之为该计算机的指令集。(MIPS讲述)


2、在MIPS体系结构中,对寄存器和存储器的操作如下:

寄存器的大小为32位,由于32位为一组的情况很常见,所以称之为 “字(word)”,另外由于MIPS使用字节编址,所以连续的地址字的地址也就相差4。另外,处理器只能将少量的数据保存在寄存器上,剩下的数以十亿记的数据都是放在存储器上的。比如数据结构和数组等。所以MIPS体系中要对存储器和寄存器之间的数据进行传输,就有了 数据传送指令 。其具体的实现方法是:讲一个基址存于寄存器中,然后通过数据传送指令进行取值,所以当使用数据传送指令取存储器中的数据(字)的时候,其地址偏移量是基址 4*逻辑偏移量。按字节编址的情况下,所有字的起始地址必须是4的倍数,这就是 对齐限制


3、计算机硬件设计的三大原则:

  • 简单源于规整
  • 越小越快
  • 优秀的设计需要适宜的折中方案

4、根据以上的结论,可以得出以下两个结论:

  • 存储器一定比寄存器慢,符合越小越快原则,因为存储器的数量远大于寄存器
  • 寄存器中的数据更绒里利用。访问时间短,吞吐率高,功耗更小。

5、在MIPS汇编语言中,有如下几个通行定理:

对立即数(也就是常数1,2··· 这些存放在存储器中的数据)的操作一般都是相对于对寄存器操作的指令加上一个i(immediately),对于无符号数则加上一个u,默认情况下是对寄存器进行有符号数的操作。另外注意,由于“0”这个数用处远比别的常数大,所以专门在寄存器zero中存放了0,且恒为0;至于为什么大?有的时候是要判断一个数是否小于0.有时候是要用0进行操作,比如异或,或非等一些操作可能用的上,所以其概率远远的高于别的常数,这就是前面讲过的“加速大概率事件发生”的重要思想的体现!


6、有符号数与无符号数。

目前普遍采用二进制补码的方式实现负数,为什么呢?我也是一阵苦恼,后来慢慢的摸索发现,二进制补码可以直接进行想加操作就得出其具体的数值,与无符号数完美的统一,具体的实现方式是把符号位,也就是最左端的一位作为符号位,然后在计算机十进制数值的时候,对符号位的十进制值取负数,然后与后面的位数的十进制数相加,就会得到其表示的负数,而取反码这一方式虽然正数负数对称,但是存在了两个0 的问题,对于粗心的程序员是很麻烦的,另外,求一个正数的相反数的补码表现形式很简单,补码=反码 1,比如0010 表示 2,第一位是符号位, 如果要取-2,那么只需要先变为1101,然后加1 得到1110,这就是二进制的-2的补码表示。转换为十进制的时候就是

-1 * 2^3 1 * 2^2 1 * 2^1 0 * 2^0=-2。当然,这一公式仅仅针对负数,正数的反码补码都是原码。


7、符号扩展。

很多时候存在了把十六位数转换为32位数的情况。这个时候,只需要把符号位复制16次,并且把原来的16位数放在右边,符号位复制后的16个数放在左边,组合之后的32位数就是32位的符号数了。然后你再算相反数的补码表示,就会发现,好神奇哟~~


8、计算机中的指令其实是早期的计算机工程师们为了方便自己编程而实现的,但是计算机本质上是只接受二进制语言的,也就是机器语言,所以所有的指令语言都存在一个转换过程,也就是前面说过的。汇编语言到机器语言的翻译,操作志林分为R I(J)两(3)种型号,前者对寄存器进行操作,后者对因为对存储器进行取址等操作,所以在32位的操作指令中后16全部划归地址表示。


9、当今计算机基于以下两个重要准则来构建:(这些原则引出了存储程序的概念,释放了计算机的巨大潜力。好处就是程序可以被当成二进制数的文件发行)

  • 指令用数的形式表示
  • 和数据一样,程序存储在存储器中,并且可以读写。

10、逻辑操作:

  • AND 和
  • OR 或
  • NOT(引入NOR或非操作,实现NOT(A)= NOT (A OR 0 )= A NOR 0 )
  • XOR 异或

11、决策指令:(可用这些指令进行判断,循环,小于,相等,小于或等于,大于,大于或等于等操作,实现基本块)

  • beq 如果想等就跳转
  • bne 如果不相等就跳转
  • slt 小于则置位,如果第二个操作数小于第三个,那么就对第一个操作数置位1
  • slti 对立即数的小于则置位

正文之后

今天有神秘嘉宾开赴武汉,所以现在18:45写完笔记的我要先回去,然后去吃个饭,然后再去接驾咯!~~~

0 人点赞