首页 > 电路 > 电路分析 > mips寄存器多少位,MIPS指令对应的机器码

mips寄存器多少位,MIPS指令对应的机器码

来源:整理 时间:2023-09-30 09:55:04 编辑:亚灵电子网 手机版

本文目录一览

1,MIPS指令对应的机器码

1、add $s0,$s1,$s2的机器码为0000 0010 0011 0010 1000 0000 0010 0000B=02328020HOP字段为000000,rs字段为$s1=$17即10001,rt字段为$s2=$18即10010,rd字段为$s0=$16即10000,shamt字段为00000,func字段为100000。2、addi $s0,$zero,32的机器码为0010 0000 0001 0000 0000 0000 0010 0000B=20100020HOP字段为001000,rs字段为$zero=$0即00000,rt字段为$s0=$16即10000,immediate字段为32即0000 0000 0010 0000。3、addi $s0,$t0,22的机器码为0010 0001 0001 0000 0000 0000 0001 0110B=21100016HOP字段为001000,rs字段为$t0=$8即01000,rt字段为$s0=$16即10000,immediate字段为22即0000 0000 0001 0110。扩展资料:MIPS指令长度为固定长度,32位;其指令地址格式为三地址格式;指令操作数一般为3个,装数/存数指令为2个。MIPS指令格式分为三种:R型、I型和J型三种。MIPS寻址方式共有五种:寄存器寻址、立即寻址、相对寄存器寻址、相对寻址和页面寻址。参考资料来源:中国知网-MIPS指令集

MIPS指令对应的机器码

2,寄存器结构及工作原理

CPU中有很多的寄存器,有临时保存数据的通用寄存器,也有专门保存指令编码或者指令地址的寄存器。它们都有存储信息的能力。 那在这一节,我们就来分析这些寄存器是如何实现的。 在CPU当中用来存放信息的非常重要的部件就是通用寄存器。比如说零号通用寄存器,在mips的体系结构中,它就是一个32位的寄存器,从电路实现上来说这32个比特都是同样的。 我们来看其中一个,它就可以用左下这样一个结构来实现。这个结构就是我们将要介绍的D触发器。 触发器是具有存储信息能力的基本单元,它有很多种类型,D触发器是其中一种。 其实触发器也没有那么神秘,它也是由与或非这样的逻辑门构成的。 仅就D触发器而言,以后有很多的实现方式,在这里我们就不深入到它的内部实现细节,而重点关注它对外提供的功能。这个D触发器主要有这三个接口,一个数据输入,一个数据输出和一个时钟输入。 它的功能表现是这样的,在时钟clock的上升沿,也就是clock从低电平变为高电平,也可以说是从0变到1的时候,这是一个很短的时间,在这时D触发器会采样输入端口D的值,经过一段很短的时间会将这个值传送到输出端口Q。在其它的时候也就是不在时钟信号的上升沿的时候,无论输入端口D如何变化,其输出端口Q的值都是保持不变的。 当然这样说起来还是很抽象,我们通过一个形象化的描述来做进一步的说明。 就好比我们平常使用的照相机,我们把镜头比作D触发器的输入端D,拍照的快门比作时钟端clock。这台相机内部带有无线传输的模块,可以将其拍摄的照片传送到一个显示器上,这个显示器就好比D触发器的输出端Q,那这样我们就把D触发器比作这个照相机和这个显示器。当按下照相机的快门后,照相机会拍一张照片,过一秒钟后显示器上显示出这张照片,对于D触发器来说,这就叫做 clock-to-Q 的时间,也就是从时钟的上升沿到来开始直到数据出现在输出端为止,这个时间是属于D触发器自身的特性。那对于这个D触发器所在的整个芯片还有一个重要的特性就是时钟频率,在这里就好比我们约定每十秒钟会来按一次快门,那这个系统的时钟频率就是零点一赫兹。 最后我们再给这一套由相机和显示器构成的D触发器加上一个输入也就是另一台显示器,这样就会拍摄左边这台显示器上的画面, 并将它显示在右边这台显示器上。 那好,现在我们就假设十秒钟到了,我们会按动一次快门,按动快门后照相机会拍摄下左边这台显示器上的画面,并在一秒钟后将拍摄的照片传送到右边这台显示器上,这个过程就体现了在时钟的上升沿D触发器采用输入端的信号,并在时钟上升沿之后 clock-to-Q 的时间,将采样的信号从输出端口送出来,那之后输入端也就是左边这台显示器上的画面可能会发生变化,但是只要不按动快门,右边显示器上的内容是不会发生变化的。也就是在下一个时钟上升沿来临之前无论输入怎么变化,输出都不会发生变化。 现在假设十秒钟又到了,我们要按动一次快门。需要注意的是就和现实中的照相一样,在按动快门的前后很短的时间内通过镜头看到的画面不应该发生变动,否则就可能造成拍出的照片是模糊的。对于D触发器来说,在时钟上升沿前后很短的时间内,输入端的信号也不能发生变化,否则就可能造成无法正确的采样。那么这也是D触发器的一个重要的特性,要求输入信号在时钟上升沿之前有一段很短的稳定时间,很短的稳定时间称为Setup时间,在时钟上升沿之后也需要有一段很短的稳定时间,称为hold时间。 好我们假设在这一次按动快门时左边显示器上的画面是稳定的, 现在我们来按动快门,再过一秒钟,这次采样的信号就被送到了输出端。这就是一个D触发器简单的工作原理。 我们再来看一看两个D触发器相连的情况,左边这个A相机就是第一个触发器,它的输出连到了右边这个B相机的输入,我们还是用同样的约定,每隔十秒钟来按动一次快门,那当十秒钟到了的时候,这两台相机的快门会被同时按动。 一秒钟后,它们的输出画面都发生了改变。但我们要注意的是A相机拍摄下来的这个绿叶是经过了clock-to-Q时间才传送到了它的输出。而在此之前B相机已经拍摄到了A相机此前的输出,也就是现在显示在最右边的显示器上的这个红色的叶子。所以我们要注意的是这两个相连的相机虽然是同时按动了快门,但并不意味着最左边的画面(绿色叶子)会一直传递到最右边的显示器上,而是将左边的相机之前存储的画面(红色叶子)依次向右传递。那么在一个复杂的系统中是有很多的D触发器用各种不同的方式相连,这样就可以在不同的触发器中存放不同的信息,并且可以在时钟的控制下进行传递,而同样在时钟上升沿没有到来的时候,无论输入发生什么样的变化都不会影响到后面触发器的输出。 通过这个例子,我们应该对D触发器的行为有了更加深入的了解。我们再来看这些解释的时候应该不会觉得那么的陌生。 我把刚才说的这个过程用一个时序图的方式表达出来。 第一行是时钟信号,它是有规律的进行变化,两个上升沿之间的间隔时间就称为时钟周期。 输入信号D则可能在任何时候发生变化。比如在这个时候(红色箭头)它由0变到了1,但是因为时钟上升沿没有到来,所以输出端Q并没有发生变化。直到时钟上升沿到来的时候(图中第一条红色虚线),D触发器会采样输入端的信号,并经过很短的clock-to-Q的时间在输出端体现出来,因为这时候输入端D(in)是1,所以输出端D(out)也变成了1。然后时间再继续,在这个时钟周期内,输入D(in)又发生了变化(蓝色箭头),由1变成了0,但是同样输出端Q(out)没有发生变化,直到下一个时钟上升沿到来,采样到了新的输入端的指令,再经过Clock-to-Q输出端也变成了0,这就是一个D触发器的基本工作行为。 那我们如果把很多个D触发器组合起来,比如就是这32个D触发器,那就可以构成一个32位的寄存器,当然这只是一个很简单的原理性实现。用这样一个32位的寄存器就可以做成CPU当中的一个通用寄存器,用同样的方法可以作出其它的通用寄存器以及PC,IR 这样的寄存器,再将这些寄存器与由逻辑门构成的电路相连, 就构成了我们这个复杂的CPU了。 原文链接: 4.3 寄存器的基本原理 - houhaibushihai (cnblogs.com)

寄存器结构及工作原理

3,基于MIPS指令集的Linux系统与基于X86指令集的Linux系统有什么区别百

MIPS的演化   MIPS16是一个1997年面世的可选的指令集扩展,它能减少二进制程序尺寸的30-40%。实现者希望这种CPU能够在很关心代码尺寸的场合中更有吸引力--这种场合通常就是指低成本系统。由于只应用于特定实现,它是一个多厂商标准:LSI, NEC和Philips都生产支持MIPS16的CPU。     使MIPS二进制代码比其他架构的并不是MIPS指令集干的活少了, 而是他们的尺寸更大一些--每个指令4字节长,相比之下某些CISC架构一般平均只有3个字节。     MIPS增加了一种模式,在这种模式下CPU可以对16位固定大小的指令进行解码。大多数MIPS16指令扩展成正常的MIPS III指令,所以很明显这将是一个相当受限制的指令子集。窍门就在于使这个子集对足够多的程序充分的进行高效编码,以使整个程序的大小得到大大的压缩。     当然,16位指令并不会使其变成一个16位指令集。MIPS16 CPU是实际存在的带有32位或者64位寄存器的的CPU,MIPS16 CPU的运算也都在这些寄存器上。     MIPS16远不是一个完整的指令集—例如它既没有CPU控制指令,也没有浮点运算指令。但没有关系,因为每一个MIPS16 CPU也必须要运行完整的MIPS ISA。你能运行MIPS16和正常的MIPS代码的混合指令。每个函数调用或者跳转-寄存器指令都能改变运行模式。     1.并不是MIPS发明了提供一种可选的使部分指令只有一半大小的创意。Advanced RISC Machine(ARM)公司的Thumb版本的arm CPU首先提出这个想法的。     在MIPS16中把指令地址编码成最低有效位(Least Significant Bit, LSB)模式是既方便又高效的。MIPS16指令必须偶字节对齐,所以bit 0不再是指令指针(instruction pointer, 就是程序计数器PC)的组成部分了;取而代之的是,每条跳到奇数地址的指令开始执行MIPS16,每条跳到偶数地址的指令回到正常的MIPS。MIPS子程序调用指令jal的目标地址总是字对齐的,所以新指令jalx隐藏了指令的模式间转换。     为了把指令压缩到一半大小,对于大多数指令我们只分配了3 bit来选择寄存器,这样只有8个通用寄存器允许自由访问;在许多MIPS指令中可以见到的16 bit常数域也被压缩,通常变成了5 bit。许多MIPS16指令只指明两个寄存器,而不是三个。另外,还有一些特别的编码规则将在下一节描述。     D.1.1 MIPS16中的特殊编码格式和指令   被缩减的通用指令没有什么问题,但有两个特定的弱点会加大程序尺寸;5 bit的立即数域构造常量是不够的,在load/store操作中也没有足够的地址范围。三种新的指令和一种特别规定有助于解决这些问题。    extend是一条特殊的MIPS16指令,它由5 bit的代码和11 bit的域构成。这个11 bit的域可以和后续指令中的立即数域相连接,这样就允许使用一个指令对来对16 bit立即数编码。这条指令在汇编语言中看起来就像一个指令前缀。     装载(load)常量在正常的MIPS模式下都需要额外的指令,在MIPS16模式下更是巨大的负担;把常量放在内存中然后再读它们会更快一些。MIPS16对相对于指令自身位置的装载操作(PC-relative loads, PC相关装载)增加了支持,允许常量被嵌到代码段中(典型情况就是在函数的起始处前面)。这些是仅有的不是严格对应于正常的MIPS指令的MIPS16指令—MIPS没有PC相关的数据操作。     许多MIPS load/store操作是直接在栈帧(stack frame)里,$29/mp可能是最普通的基寄存器。MIPS16定义了一组隐式使用mp的指令,允许我们把函数的栈帧引用地址也编进去而不需要一个分离的寄存器域。     MIPS的Load指令总是生成32位的全地址。由于装载字(load word)指令只有当地址是4的倍数是才合法,最低两位就被浪费了。MIPS16的Load指令是可以伸缩的:地址的偏移量会根据被load/store的对象的大小左移,这样就增加了指令中可用的地址范围。     作为一种额外的应急机制,MIPS16定义了一些指令,允许在8个MIPS16可访问的的寄存器中的一个与32个MIPS通用寄存器中的任何一个间任意做数据移动。     D.1.2 对MIPS16的评价     MIPS16对于汇编语言编程来说不是一种合适的语言,我们也不准备对它详细说明。这些是编译器的工作。大多数使用MIPS16模式编译的程序的尺寸都会缩小到用MIPS模式编译的 60-70%。MIPS16比32位CISC架构的代码更紧凑,和arm的Thumb代码差不多,和纯16位CPU相比相当有竞争力。     但是没有免费的午餐;MIPS16程序可能比MIPS增加40-50%的指令。这意味着在CPU核上运行一个程序会多用40-50%的时钟周期。但是低端CPU经常主要被存储器所限制,而不是被CPU核所限制。较小的MIPS16程序需要较低的带宽来取指令,这样就得到更低的cache缺失率。在cache很小并且程序的存储器有限时,MIPS16将会弥补差距,还有可能要重新改写正常的MIPS代码。     由于性能的降低,MIPS16代码在有大的存储器资源和很宽总线的计算机中没有吸引力。这就是为什么它只是一种可选扩展的原因。     在应用范围的另一端, MIPS16将会与软件压缩技术展开竞争。在放进ROM存储器之后,使用通常的文件压缩算法压缩的正常MIPS程序将会比未压缩的同等MIPS16代码小,而稍大于压缩过的MIPS16同等代码(注1);如果你的系统拥有足够的内存能够把ROM当做文件系统使用,而把代码解压缩到RAM中执行,那么全ISA软件解压很可能会带来更好的总体性能。     也有这样一种趋势来构造系统,那就是大量使用以字节编码的解释语言(Java或者它的后续者)来书写大量在时间上要求不严格的程序。那种中间代码非常小,在尺寸方面比任何二进制机器码都高效的多。如果只有解释器和一些对性能要求严格的程序留在机器中ISA中,那么更密集的指令集编码格式将只会影响程序的一小部分。当然解释器(特别是Java)本身会非常大,但是应用复杂度的无情增长将很快使它减少重要性。     我预料在1998-2003年将会看到MIPS16小范围的应用于低能量、小尺寸和成本受限制的系统中。它还是值得发明的,因为有些系统—比如”智能”移动电话—可能会大量生产。      1.更密集的编码格式在使用上比压缩算法有更低的冗余度。     D.2 MIPSV/MDMX   MIPS V和MDMX是在1997年早些时候一起公布的。它们本来是为一种新的准备在1998年发布MIPS/SGI的CPU中的指令而设计的。但是那个CPU后来被取消了,关于它们的未来存在疑问。   二者都是为了克服一些已知的传统指令集的不足,这些不足是在ISA面向多媒体应用中产生的。象软调制解调器的语音编/解码、或流媒体应用、或图像/视频的压缩/解压缩这样的任务采用一些过去只有专用数字信号处理器(digital signal processor, DSP)才用的数学算法。在这种计算等级,多媒体任务通常都包括重复进行一些对大向量或者数组数据的相同操作。     在基于寄存器的机器内部,通常采用的方案是把多媒体数据项封装到一个机器寄存器中,然后执行一条寄存器-寄存器指令,这条指令对于每个寄存器中的每个域做同样的工作。这是一种非常明显的并行处理形式,被称为单指令,多数据(single instruction, multiple data. SIMD)。     这个想法首先见于一款Intel的业已消失的i860架构的微处理器(circa 88)中。作为对Intel x86指令集进行扩展的MMX在1996年投放市场后,SIMD重新登场时更加引人注目。     MDMX对操纵在一个64位寄存器中8x8-bit的整数组提供了一组操作,这些操作能够对所有的8小片做同样的事情。这些指令包括通常的算术操作(加,减,乘),也有乘法-累加指令能把结果放在一个巨大的累加器中,这个累加器有足够的精度防止溢出。     由于这些指令被用于特定数据类型被相当清楚的从正常的程序变量分离开来的场合中,MDMX指令集与浮点寄存器一起工作就变得有意义。以这种方式重复利用现有的寄存器意味着现有的操作系统不需要改变(在任务切换时操作系统已经保存和恢复浮点寄存器了)。     与MDMX相似,Intel的MMX为封装进一个64bit的8个8bit数提供了”octibyte”八路(eight-way)指令。MIPS MDMX也定义了4x16位(四个短整数操作)和2x32位(两个字操作)格式,但是早期的情况是一些MDMX实现可能认定octibyte格式和指令足够了。     当对8bit的数做算术运算时, 结果经常下溢和上溢。如果我们必须为众多的溢出测试条件编写处理程序,那么多媒体应用的性能将不会得到提高。而只简单截去最大的和最小的数(对于无符号8-bit数来说,就是255和0)的上溢和下溢结果,对于机器运算来说会更加有帮助。这个处理过程叫做”饱和”(saturating)算法。MDMX拥有这种能力。     这就给我们带来了MIPS V。尽管从名字上看好像意思是指一个升级的指令集--就像MIPS I到IV那样,MIPS V在浮点领域跟MDMX很相似,提供了paired-single操作。paired-single对一对被封装进64-bit的浮点寄存器中的单精度数做两次FP动作。     MIPS V没有MDMX那么古怪;MIPS IV包含了一个相当广泛的浮点运算集合,并且直接为其中的绝大部分提供了paired-single版本的指令;甚至成对比较(paired-compare)也可以做到,这是因为MIPS IV的CPU已经有了多个浮点条件位来接收结果。但MIPS V没有提供复杂多周期指令的成对操作版本的指令,这些多周期指令会需要非常多新的资源(例如没有求平方根和除法)。     D.2.1 编译器能用多媒体指令吗?   引入SIMD多媒体指令的原因和70年代晚期以前在超级计算机中提供向量处理单元的原因相似。很容易为向量处理器构造一个手工矩阵算术包。而用向量运算来编译一个用高级语言写成的程序就难得多了,尽管超级计算机提供商在这上面也取得一些成果。通常这些成果都集中在Fortran上;对于常规编程来说语义上的弱点使Fortran成为一种可怜的语言,但是这让它变成了一种很容易优化的语言

基于MIPS指令集的Linux系统与基于X86指令集的Linux系统有什么区别百

文章TAG:mips寄存器多少位寄存寄存器多少

最近更新

  • 1oz铜厚过多少电流,1mm2铜线可以过多少电流1oz铜厚过多少电流,1mm2铜线可以过多少电流

    本文目录一览1,1mm2铜线可以过多少电流2,150mil1盎司的铜厚过多少电流3,线路板铜泊厚01mm宽1mm长10mm电压DC30V请问能承受4,05盎司能过多大电流5,直径50mm厚1mm的紫铜片能过多少a电流6,PCB1m.....

    电路分析 日期:2024-04-11

  • ao4435多少钱,84消毒液多少钱一瓶ao4435多少钱,84消毒液多少钱一瓶

    84消毒液多少钱一瓶2,求大功率开关管工作电压12V启动电流达到100A左右工作电流是810A3,OCTO手表都多少钱4,移动电源IC的MOS管5,这个烟多少钱一盒6,怎么用万用表检测场效应管的好坏7,这个555.....

    电路分析 日期:2024-04-10

  • 戴维南电路题,电路的戴维宁定理戴维南电路题,电路的戴维宁定理

    在断开的电路中,找到剩余短路的戴维宁(诺顿)等效电路。解决方法:首先,找出电阻R从电路断开后的戴维宁等效电路,求解戴维南定理的基本步骤如下:戴维南等效是关于电压源的等效,因此,第一步:将需.....

    电路分析 日期:2024-04-10

  • 电阻精度的测量电路,高精度电阻测量电路电阻精度的测量电路,高精度电阻测量电路

    测量电阻时应注意以下几点:第一,测量前先切断电路!测量被测电阻时,应断开被测线路的电源,否则会影响测量精度,严重时还会损坏万用表。例如,为了测量汽车中电器或线路的电阻,可以断开电池,输入.....

    电路分析 日期:2024-04-10

  • 开发芯片要多少钱,做芯片大约能要多少钱啊开发芯片要多少钱,做芯片大约能要多少钱啊

    做芯片大约能要多少钱啊现在一般来说都在5000以上做芯片要一定批量。贵的多得是你要做什么芯片。2,做一块基因芯片要花多少钱看什么公司的,有三千多到六七千都有。看做什么项目了,佳学基.....

    电路分析 日期:2024-04-10

  • cx1084稳压多少伏,cx1084ADJ电流是多少cx1084稳压多少伏,cx1084ADJ电流是多少

    cx1084ADJ电流是多少此为最大输出5A的LDO这个应当是1个产品的型号2,CX1084是什么块电源稳压器,3.3V和5V的比较常用-------------------------3,电子式仪表稳压器的输出电压一般为多少伏.....

    电路分析 日期:2024-04-10

  • 电压保护器的接线如何连接电涌保护器电压保护器的接线如何连接电涌保护器

    两相漏电保护器接线,电涌保护器的正确接线方法是选择与电涌保护器额定电流和电压相匹配的插座。漏电保护器用于支路保护时,电涌保护器的正确接线方法,使用正确的电缆和连接器:选择合适的.....

    电路分析 日期:2024-04-10

  • boost电路的频率能达到多少,为什么boost电路的pwm波占空比达到一定值就会短路boost电路的频率能达到多少,为什么boost电路的pwm波占空比达到一定值就会短路

    本文目录一览1,为什么boost电路的pwm波占空比达到一定值就会短路2,sy7711芯片boost电路效率3,BOOST电路中的PWM频率如何设置跟电感和开关管的关系如何4,boost电路5,980ti145g超1070是指的bo.....

    电路分析 日期:2024-04-10