今天的主题就是,从新学一次汇编语言,不过总感受跟单片机的汇编语言没啥差异,不过就是地址变宽,而后一些限制多了很多,由于计算机要进行大量的运算,因此更加全面而且更加开阔吧,毕竟单片机只是嵌入式经常使用,属于比较低端的,不过操做其实差很少,幸甚至哉~~程序员
一、要让计算机服从指挥,就必需要有计算机的语言,计算机语言的基本单词称之为指令,一台计算机的全部指令称之为该计算机的指令集。(MIPS讲述)编程
二、在MIPS体系结构中,对寄存器和存储器的操做以下:数组
寄存器的大小为32位,因为32位为一组的状况很常见,因此称之为 “字(word)”,另外因为MIPS使用字节编址,因此连续的地址字的地址也就相差4。另外,处理器只能将少许的数据保存在寄存器上,剩下的数以十亿记的数据都是放在存储器上的。好比数据结构和数组等。因此MIPS体系中要对存储器和寄存器之间的数据进行传输,就有了 数据传送指令 。其具体的实现方法是:讲一个基址存于寄存器中,而后经过数据传送指令进行取值,因此当使用数据传送指令取存储器中的数据(字)的时候,其地址偏移量是基址+4*逻辑偏移量。按字节编址的状况下,全部字的起始地址必须是4的倍数,这就是 对齐限制 。数据结构
三、计算机硬件设计的三大原则:翻译
四、根据以上的结论,能够得出如下两个结论:设计
五、在MIPS汇编语言中,有以下几个通行定理:3d
对当即数(也就是常数1,2··· 这些存放在存储器中的数据)的操做通常都是相对于对寄存器操做的指令加上一个i(immediately),对于无符号数则加上一个u,默认状况下是对寄存器进行有符号数的操做。另外注意,因为“0”这个数用处远比别的常数大,因此专门在寄存器zero中存放了0,且恒为0;至于为何大?有的时候是要判断一个数是否小于0.有时候是要用0进行操做,好比异或,或非等一些操做可能用的上,因此其几率远远的高于别的常数,这就是前面讲过的“加速大几率事件发生”的重要思想的体现!cdn
六、有符号数与无符号数。blog
目前广泛采用二进制补码的方式实现负数,为何呢?我也是一阵苦恼,后来慢慢的摸索发现,二进制补码能够直接进行想加操做就得出其具体的数值,与无符号数完美的统一,具体的实现方式是把符号位,也就是最左端的一位做为符号位,而后在计算机十进制数值的时候,对符号位的十进制值取负数,而后与后面的位数的十进制数相加,就会获得其表示的负数,而取反码这一方式虽然正数负数对称,可是存在了两个0 的问题,对于粗心的程序员是很麻烦的,另外,求一个正数的相反数的补码表现形式很简单,补码=反码+1,好比0010 表示+2,第一位是符号位, 若是要取-2,那么只须要先变为1101,而后加1 ,获得1110,这就是二进制的-2的补码表示。转换为十进制的时候就是事件
固然,这一公式仅仅针对负数,正数的反码补码都是原码。
七、符号扩展。
不少时候存在了把十六位数转换为32位数的状况。这个时候,只须要把符号位复制16次,而且把原来的16位数放在右边,符号位复制后的16个数放在左边,组合以后的32位数就是32位的符号数了。而后你再算相反数的补码表示,就会发现,好神奇哟~~
八、计算机中的指令实际上是早期的计算机工程师们为了方便本身编程而实现的,可是计算机本质上是只接受二进制语言的,也就是机器语言,因此全部的指令语言都存在一个转换过程,也就是前面说过的。汇编语言到机器语言的翻译,操做志林分为R I(J)两(3)种型号,前者对寄存器进行操做,后者对由于对存储器进行取址等操做,因此在32位的操做指令中后16所有划归地址表示。
九、当今计算机基于如下两个重要准则来构建:(这些原则引出了存储程序的概念,释放了计算机的巨大潜力。好处就是程序能够被当成二进制数的文件发行)
十、逻辑操做:
十一、决策指令:(可用这些指令进行判断,循环,小于,相等,小于或等于,大于,大于或等于等操做,实现基本块)
今天有神秘嘉宾开赴武汉,因此如今18:45写完笔记的我要先回去,而后去吃个饭,而后再去接驾咯!~~~