mips相关内容

MIPS中三个整数的乘法

我想在MIPS中乘以三个整数.我的第一个想法是将第一个和第二个相乘,然后将结果与第三个相乘(就像我对add所做的那样).但是结果在64位的HI和LOW中给出.那么如何将其乘以第三个因子呢? 和: 32位整数* 32位整数= 64位整数.理论上会得到什么: 32位整数* 32位整数* 32位整数= ?? 96位? 128? 感谢您的提示. 解决方案 将n位数字与m位数 ..
发布时间:2020-05-09 23:07:23 其他开发

有和没有转发的MIPS管道停顿

按照以下MIPS指令顺序(整个程序未显示): DADDUI R1, R1, #-8 BNE R1, R2, Loop 我想确认两条指令之间(在5级MIPS流水线的情况下-IF,ID/Reg,EX,MEM,WB)在有无转发的情况下所需的停顿数. 我的理解: (a)如果没有转发: 在这种情况下,需要2个停顿(在第5周期中,可以使用寄存器的分相访问在ID阶段读取R1以进行第 ..
发布时间:2020-05-09 23:07:20 其他开发

如何使用性能统计来计算MIPS

有关基准测试的答案-如何计算发送给CPU的指令数以查找消耗的MIPS 建议: Linux上的 perf stat ./my_program将使用CPU性能计数器来 记录它运行了多少条指令,以及它有多少个核心时钟周期 拿. (以及它使用了多少CPU时间,并将为 你). 一个示例生成以下输出,该输出不包含计算出的MIPS信息. Performance counter stats fo ..
发布时间:2020-05-09 23:07:18 其他开发

将十进制转换为基数为4的汇编(MIPS)

如何将十进制数组中的整数转换为以4为底的整数(有符号和无符号)? 解决方案 您可以使用以下算法:将数字除以所需的底数,直到商为零,然后使用余数作为相反的最终结果,例如: QUOTIENTS OF EACH DIVISION ▼ ▼ ▼ 23÷4 = 5÷4 = 1÷4 = 0 3 1 1 ..
发布时间:2020-05-09 23:07:10 其他开发

MIPS组件,Lui 0x1001

我有一个作业,其中我必须解释有关以下MIPS汇编代码的一些事情: .data x: .word 4711 y: .word 10 z: .word 0x0A91 e: .word 0 .text .globl main main: lw $2, x lw $3, y lw $4, z add $2, $2, $3 sub $3, $2, $4 sw $3, e li $2, 10 sysc ..
发布时间:2020-05-09 23:07:06 其他开发

了解MIPS程序中的lw和sw实际工作方式

我很难理解MIPS程序中sw和lw的功能.我对该主题的理解是,我们使用lw将数据从内存传输到寄存器中,反之亦然.但是,这到底是如何实现的呢? 假设我们有以下代码行: lw Reg.Dest, Offset(Reg.Source) sw Reg.Source, Offset(Reg.Dest) 如果我们专注于lw,它实际上是存储来自存储器的数据,Reg.Source并将该数据的地址乘 ..
发布时间:2020-05-09 23:07:01 其他开发

MIPS堆栈帧(和"addiu"指令混乱)

我是MIPS的新手,正在尝试了解函数的反汇编. (编辑:它动态链接到/lib/ld-uClib.so.0并使用一些常用的libc函数,因此我假设它是使用uClibc工具链用C编写的,因此应该具有该调用过程和堆栈框架等). 在函数开始时会执行 00400824 : 400824: 3c1c0fc0 lui gp,0xfc0 ..
发布时间:2020-05-09 23:06:56 其他开发

卡在MIPS递归函数上

我正在MIPS中进行作业,我觉得自己的逻辑是合理的,但是我只是无法获取代码以产生正确的输出.谁能看得到我所提供的帮助吗?这是我要实现的C语言中的相应功能. int function1(int n) { if (n ..
发布时间:2020-05-09 23:06:51 其他开发

Mips输出系统调用

li $s5, 2 add $a0, $s5, $0 li $v0, 4 syscall 为什么系统输出在spim中为(null)? 解决方案 看起来您正在尝试打印int,但是您提供的系统调用代码代表“打印字符串". 由于没有名为2的标签(因此,没有从标签2的地址开始的字符串),控制台将打印出(null). 尝试 li $a0, 2 #integer to be pr ..
发布时间:2020-05-09 23:06:44 其他开发

为什么未在硬件中实现MIPS BLT指令?

我想问为什么BLT指令不是MIPS ISA的一部分.相反,它们实际上使它成为汇编程序员的伪指令.从硬件实现的角度来看,我只是无法识别BLT和BLTZ(这是MIPS ISA的一部分)之间的区别. “计算机组织与设计"一书所说: 听从冯·诺伊曼关于MIPS架构“设备"不简单的警告,其原因在于分支过于复杂,要么会延长时钟周期时间,要么是每条指令都需要额外的时钟周期,这是因为二者过于复杂更快的 ..
发布时间:2020-05-09 23:06:37 其他开发

使用无条件的MIPS分支而不是跳转有什么好处吗?

我目前正在大学中学习MIPS汇编,并且正在努力尝试使用该语言.据我了解,跳转命令使我在内存中的跳转比分支命令给出的额外可用位更远.那为什么我为什么要使用无条件分支而不是使用跳转? 解决方案 MIPS没有无条件分支.它可能是您的汇编器提供的伪指令,例如BEQ R1,R1.分支是可取的,因为它们允许代码位于内存中的任何位置,而无需 重定位 .在没有MMU的计算机上并希望实现共享库是理想的.对此 ..
发布时间:2020-05-09 23:06:35 其他开发

MIPS伪指令,替代品

研究了什么之后,我发现这只是获得相同结果的方式的替代.如果我错了,请纠正我. 示例: move $s0, $t1 可以替换为: add $s0, $zero, $t1 问题: 如何替换lw,la,sw,bne? 解决方案 是的,move指令可以并且由add指令代替. 伪指令的某些背景:MIPS是RISC(精简指令集计算机)体系结构,这意味着您可以使用 ..
发布时间:2020-05-09 23:06:33 其他开发

PLP:计时器和按钮中断服务程序

所以我在弄清楚如何触发定时器中断(每200个周期)和按钮中断时遇到了麻烦.当我按下按钮中断时,似乎要做的只是暂时暂停计数器一秒钟,然后继续计数.然后,无论我在PLP上单击它的频率如何,它都永远不会注册另一个按钮中断.假定按钮中断要做的是将寄存器$ a1设置为1(或非零数字),该寄存器用于复位计数器.假定计时器中断每200个周期使LED闪烁一次,然后在另外200个周期后熄灭,依此类推.已经提供了七段 ..
发布时间:2020-05-09 23:06:30 其他开发

MIPS在过程中使用$ s0 ...等reginsters并最终将其还原是否优雅

我在MIPS教程中读到,在整个过程调用中只保留reginster $ s0- $ s7. 但是我认为(夫人,我错了吗?)创建具有副作用的过程并不好-我认为过程仅应更改$ v0,$ v1寄存器和堆栈(如果需要的话)(对吗?). 因此,在我的程序内部,我只能使用$ t0- $ t9的reginster. 但是,当我在程序中调用某些程序时,可以更改$ t0- $ t9的reginster.因此,我必须存 ..
发布时间:2020-05-09 23:06:27 其他开发

MIPS中的Rem和MFHI之间的区别

这之间有什么区别吗? rem $s0, $t0, $t1 和这个: div $t0, $t1 mfhi $s0 我知道第一个可以使用,但是我不确定第二个可以使用.是同一回事吗? 解决方案 较早的MIPS没有rem,只有一个div可以将结果放入特殊寄存器中,以避免回写到主寄存器时的微体系结构问题.通过简单的流水线从高延迟指令中注册文件. 不是mfhi计算余数,而是d ..
发布时间:2020-05-09 23:06:24 其他开发

关于编写汇编以调用数组上的函数的MIPS问题

我目前正在上汇编课程,并且在执行以下作业时遇到麻烦. 编写一个程序(在适当的提示下)读取20个整数的序列并将其存储在数组中,然后调用以下三个函数并以可读格式打印结果. 这三个功能是: smallestLargest :计算数组中的最小和最大值. 可整除:计算数组中可被4整除的整数的数量 SumProduct::计算整数之和和. 我编写了汇编代码(如下)以尝试解决此问题,但是除了数 ..
发布时间:2020-05-09 23:06:15 其他开发

您如何在Python中模拟硬件?

那种令人困惑的标题,但是我的任务是用高级语言(我可能最了解python)编写一个4级MIPS处理器(IF,ID,EX,WB).除了我什至尚未开始尝试的有关缓存和停顿的困难之外,如何处理应该并行运行的代码并使之顺序运行?考虑一下此代码段. pc = 0x0 IFinput, IDinput, EXinput, WBinput = None, None, None, None while Tru ..
发布时间:2020-05-09 23:06:06 Python