mips相关内容

MIPS 中的堆栈.addi $sp,$sp,-4 中的 4 的目的是什么?

我正在研究使用过程的 MIPS 代码,但我不明白堆栈 (sp) 和帧指针 (fp) 的用途是什么. 例如我研究的代码如下.它打印您输入的数字之前的所有数字,例如3. 3,2,1,0 并显示它使用了多少堆栈大小.在本例中,它使用了 16.我将 -4 更改为 -8 并且出现错误.但是,我注意到其他一些使用 -8 的代码. 问题是我错过了什么? 过程:addi $sp,$sp,-4 #sw ..
发布时间:2021-06-02 22:19:56 其他开发

bnez MIPS 指令的编码是什么?

如果 Loop 的地址是 0x00012344,最后一条指令的编码是什么? 循环:添加 $a0, $0, $t0原 $v0, $0, 4系统调用添加 $t0, $t0, -1bnez $t0, 循环 这最后一条指令相当于: bne $t0, $0, 循环 但是,我将如何用机器代码编写它? 这就是我得到的: 000101 01000 00000 iiii iiii iiiiii 我 ..
发布时间:2021-06-02 22:19:53 其他开发

MIPS 到 C 的翻译

我需要将一些 MIPS 汇编指令翻译成 C 代码.我想我明白了,但这似乎违反直觉.有什么帮助吗?我们将变量 f、g、h、i、j 分别存储在寄存器 $s0、$s1、$s2、$s3 和 $s4 中.数组 A 和 B 的基数分别存储在 $s6 和 $s7 中.4 字节字.代码中的注释是我自己的. addi $t0, $s6, 4 # $t0 = A[1]添加 $t1, $s6, $0 # $t1 = ..
发布时间:2021-06-02 22:19:52 其他开发

动态与静态指令计数

动态指令数和静态指令数有什么区别? 一个.导出一个表达式来计算用户 CPU 时间作为函数以下参数:动态指令数(N),每条指令的时钟周期 (CPI) 和时钟频率 (f) B.解释在问题 3a 中选择“动态"指令计数作为参数的原因而不是“静态"指令计数 解决方案 动态指令数是 CPU 为特定程序执行实际执行的指令数,而静态指令数是程序拥有的指令数. 我们通常使用动态指令计数, ..
发布时间:2021-06-02 22:19:48 其他开发

将 C 程序转换为 MIPS

我必须将以下 C 函数转换为 MIPS: int my_function(int x, int y){国际我,一;a = x+y;i = x-2;a = a+i;返回一个;} 假设变量 x 和 y 分别从参数寄存器 $a0 和 $a1 传递.返回值应存储在寄存器 $v0 中.请注意,如果在此过程中使用它们,则需要使用堆栈来存储任何其他寄存器. 因为我是 MIPS 的新手,所以我尝试参考 ..
发布时间:2021-06-02 22:19:45 其他开发

MIPS系统调用指令

我反汇编了一些 MIPS 机器代码,得到以下代码片段. 00 00 00 0C syscall 0 # 系统调用00 00 00 00 没有03 E0 00 08 jr $ra # 跳转寄存器00 00 00 00 没有 我想知道syscall 0的含义. 我知道调用 syscall 需要 syscall 号码.并且传递了 syscall 号通过 $v0 注册. 没有使用 $v0 ..
发布时间:2021-06-02 22:19:42 其他开发

将一个寄存器中的某些位存储到另一个寄存器的某些位中

我正在尝试学习计算机组织,以便为即将到来的学期做好准备,但我偶然发现了这个问题.该问题要求将寄存器 $1 的第 5 至 10 位存储到寄存器 $2 的第 10 至 15 位,而不更改 $1 和 $2 的其余位.注意:它还表示位编号是小端. 这就是我所做的. sll $3, $1, 22单反 $3, $3, 27sll $3, $3, 10 # 在最后 3 个步骤之后 $3 应该有所需的位, ..
发布时间:2021-06-02 22:19:36 其他开发

处理器如何知道程序结束?

我想知道,处理器如何知道何时停止执行程序.或者更确切地说,何时停止“获取,解码执行"循环. 我想过不同的方法,但不确定哪个是正确的,或者它们是否都是错误的. 1- 可能是汇编器在末尾自动添加了一条特殊指令,让处理器知道这是结束. 2- 当它到达无效内存时(但它是如何识别的). 3- 它循环并重新运行程序,但它又如何识别何时循环或由汇编程序自动添加. 4- 或者它根本不会停止,它将永远运行 ..
发布时间:2021-06-02 22:19:32 其他开发

为什么 QtSPIM 告诉我“第二次定义标签"?

我是学习 MIPS 汇编代码的新手,我们得到了第一个编码任务.当我运行我的程序时出现错误(它应该是我们必须编写的另一个函数的测试器)说 "spim: (parser) 标签在文件/home/jlr247/215_A2_work/jlr247-a2-A.s 的第 13 行第二次定义主要的:^" 我的代码是: .data.align 4_arrA: .space 400_arrB: .s ..
发布时间:2021-06-02 22:19:28 其他开发

如何关闭 MIPS-GCC 自动指令重新排序?

按照这个问题:带有跳转的奇怪 MIPS 汇编器行为(和链接)指令 我有一个用于我的单周期 MIPS 项目的 GNU 汇编工具链(没有分支延迟槽!).不过,我真的更喜欢用 C 编写.从编译器生成的代码本身确实可以运行,但我每次都必须手动编辑汇编源代码,因为 GCC 出于某种原因喜欢自动重新排序分支指令本身.我不想用脚本来破解它来确定何时再次重新排序分支. 有没有办法绕过这个?GCC 出于某种原 ..
发布时间:2021-06-02 22:19:25 其他开发

在 MIPS 上生成随机数

我找到了这个可能的解决方案但它给了我类似的东西: 598756802373297426-2011171535 这就像它打印地址而不是数字值.如何解决? 我还需要为生成器设置一个范围.比如生成一个 0 到 99 之间的随机数. 我怎么能这样做? Obs:已尝试使用 syscall 42 代码,但出现错误. (OFF:至少告诉我投反对票的原因,我没有水晶球). 代码: .tex ..
发布时间:2021-06-02 22:19:20 其他开发

最低有效位mips

如何在 Mips 中更改寄存器中的最低有效位? 在另一篇文章如何在 MIPS 中获得 LSB 位?,它看到了如何得到它,但我想改变它. 解决方案 下面一行应该做: xori $t0, $s0, 1 解释:$s0 中的内容包含 0 和 1,而立即数在 LSB 中包含 0 和 1.当 LSB 为 0 时,与 1 异或输出 1.每当为 1 时,与 1 异或输出 0.其余位如果为 1,则输出 ..
发布时间:2021-06-02 22:19:15 其他开发

MIPS:求 5 个整数的平均值

目标:使用用户输入,使用五个寄存器找到平均值. 示例: 1 3 2 9 4 输出: 3 输出是 3,因为 3.8 是小数,我想要整数 我的目标是不使用数组,但我在添加所有 5 个寄存器时遇到问题: .dataprompt1: .asciiz " 请输入一个整数: "prompt2: .asciiz " 请输入一个整数: "prompt3: .asciiz " 请输入一个整 ..
发布时间:2021-06-02 22:19:01 其他开发

处理非数字用户输入到 MARS 读整数系统调用?

我正在做一个简单的停车场程序,它接受用户的输入,并根据输入分支到一个标签. 问题是,如果用户输入的数据类型不同于整数(如“a"或任何字母),程序总是会突然结束 以下是我的代码(与输入部分相关): li $v0,5 #系统调用以获取用户输入系统调用里 $t1,2beq $v0,1,park # 如果输入为 1,则转到代码的“park"部分beq $v0,2,exit # 如果输入为 ..
发布时间:2021-06-02 22:18:56 其他开发

装配 MIPS:嵌套循环

当我尝试编写一些代码来打印五行星号乘以 4 时,确实有点棘手. **************** 所以我认为嵌套循环可以挽救这一天.男孩,我错了. 所以我为星号做了一个内循环,为空格做了一个外循环,如下所示: .text.globl 主主要的:为内循环添加 $t0, $zero, $zero #i 计数器为外循环添加 $t2, $zero, $zero #j 计数器外环:内循环:slt ..
发布时间:2021-06-02 22:18:53 其他开发

MIPS XSPIM 不同的字节顺序混乱

作为第一次使用 MIPS 的我似乎很困惑.我有一个同学说那里XSPIM是大端.但是,在 Linux 中它是小端字节序.如果 MIPS 可以是小端或大端.有没有办法在 XSPIM 中找出它在您的机器中是按小端还是大端运行? 解决方案 SPIM 采用运行它的机器的字节序.(http://www.dsi.unive.it/~arcb/LAB/spim.htm#Byte%20Order) 这 ..
发布时间:2021-06-02 22:18:50 其他开发

MIPS I 指令立即域

该字段由算术和条件分支指令使用. 第一个问题是: 可以存储在立即算术指令和条件分支中的值的范围是多少? 第二个是: 如果 MIPS 处理器有 64 个寄存器,您将如何更改立即指令格式以引用这些寄存器?我将如何绘制和标记格式? 解决方案 第 1 部分: 如下图所示: I-Type 指令为立即数字段保留了 16 位.这当然意味着立即数字段可以采用 216 个 ..
发布时间:2021-06-02 22:18:46 其他开发