需要帮助向 MIPS 单周期数据路径添加更多功能

2024-01-31

I am trying to add jal functionality to the following but I am stuck with how does it work. I know that it stores the old PC+4 value in the $ra register and then transfers the control to the function which transfers back the control by return $ra but how do I implement it in the hardware? enter image description here


您需要做两件事。

  1. 在寄存器的输入端添加一个多路复用器,以便可以选择 PC+4 值作为要写入的数据。通过适当的控制信号,这将允许您写入 PC+4 作为“jal $ra”指令的附加效果。
  2. 执行返回“jr $ra”指令。您需要将一个多路复用器添加到选择下一个 PC 的逻辑链中,以便当指令为“jr xxx”时,可以从寄存器文件中选择“读取数据 1”作为下一个 PC。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要帮助向 MIPS 单周期数据路径添加更多功能 的相关文章

  • 将值存储在 MIPS 的 HI 和 LO 寄存器中

    我正在 MIPS 中编写某些代码 并且要求将结果暂时存储在HI and LO特殊寄存器 均为 4 字节宽 这些说明可供我使用 divu s t lo lt s div t hi lt s mod t multu s t hi lo lt s
  • 简单的 MIPS 汇编 - 返回斐波那契数

    我正在尝试创建一个简单的汇编代码 它接受输入 N 并返回第 N 个斐波那契数 例如 如果您输入 2 它应该输出 1 如果您输入 3 它应该输出 2 我的代码不会抛出任何错误 但是在输入数字后它会返回一些奇怪的东西 如果输入 1 则返回 26
  • 使用 Valgrind 运行时 mmap 返回 EINVAL

    我针对 Valgrind 运行的 mips32 应用程序在 mmap 函数中失败 如果我单独运行它工作正常 但是当我针对 valgrind 运行它时 它每次都会失败并显示 EINVAL void mem uint32 t mmap NULL
  • 在用 QtSpim 编译的 MIPS 中生成随机整数

    所以我看到了很多关于使用 MARS 在 MIPS 程序中生成随机整数的问题 系统调用 42没关系 问题是我需要为编译的程序生成一个随机整数QtSpim 它没有 42 或大于 17 的系统调用 我无法弄清楚从系统中获取类似随机值的东西 例如
  • 为什么IA32不允许内存到内存mov? [复制]

    这个问题在这里已经有答案了 在Intel架构IA32中 movl movw等指令不允许操作数同时是内存位置 例如 不允许使用指令 movl eax edx 为什么 答案涉及对 RAM 的更全面的理解 简单来说 RAM只能处于两种状态 读模式
  • 用 MIPS 汇编语言读取和打印整数

    我的程序应该读取一个整数并将其打印回给用户 但每次它都只打印 268501230 无论输入什么 我该如何修复它 data prompt2 asciiz Please enter value array1 space 40 array2 sp
  • 什么是 ARM Thumb 指令集?

    在 ARM11TechnicalRefManual 第 1 34 节的 Thumb 指令集 下 它说 Thumb指令集是最常用的32位ARM指令的子集 Thumb指令有16位长 并且有相应的32位ARM指令 对处理器模型具有相同的效果 任何
  • 系统调用和陷阱之间的区别

    我想知道 MIPS 系统调用和陷阱指令之间是否有任何区别 我找不到任何涉及此的内容 所以我不确定是否有区别 陷阱似乎只是一个条件系统调用 但一些澄清可能会有所帮助 The SYSCALL and TRAP指令都会触发异常 但产生的异常是不同
  • 如何在不使用内置指令的情况下在 MIPS 汇编中实现乘法和除法?

    好吧 问题就在这里 我必须编写一个 MIPS 程序 从用户那里获取 2 个输入数字 然后 我必须编写一个代码来输出用户输入的 2 个数字的乘积 商和余数 现在 这非常简单 但是 我没有意识到我们不能在程序中使用乘法和除法操作数 现在我不知道
  • 程序如何执行?操作系统在哪里发挥作用?

    程序从某种语言编译为 ASM gt 机器代码 直接可执行 当人们说这是平台相关时 意味着形成的二进制文件只能在具有相同指令集架构 如 x86 x86 64 的 CPU 上运行 正确 由于 ISA 的差异 它可能 错误地 可能 根本 不在其他
  • MIPS——这重要吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的问题 了解 MIPS 编程语言有用吗 我是一名计算机科学学生 正在上一门以 MIPS 为重点的汇编课程 我很擅长使用高级语言进行编写 但 M
  • 在MIPS中,为什么跳转指​​令可以将程序计数器设置为28位目标地址

    在 MIPS 中 32 位跳转指令由 6 位操作码和 26 位我们要设置程序计数器的目标 目标 地址组成 然而 可以将程序计数器设置为 28 位目标地址 如果跳转指令只能容纳 26 位 这怎么可能呢 MIPS 上的指令始终是 4 字节对齐的
  • 在单周期数据路径中加载半字和加载字节

    有人询问如何在单周期数据路径中实现加载字节而无需更改数据存储器 解决方案如下 替代文本 http img214 imageshack us img214 7107 99897101 jpg http img214 imageshack us
  • 如何在 OS161 中添加 open 系统调用的两个变体?

    从手册页OS161 Synopsis include
  • x86 汇编中 cmove 指令的用途?

    反汇编可执行文件时我遇到了cmove操作说明 我已经在互联网上搜索过 但我只发现这是一个有条件的移动 如果源和目的地相等mov发生 我还不明白为什么我需要它 因为它不会改变操作数 它的目的是什么 The CMOVcc指令不比较源和目标 它们
  • 如何关闭MIPS-GCC自动指令重排序?

    继这个问题之后 使用跳转 和链接 指令的奇怪 MIPS 汇编器行为 https stackoverflow com questions 3807480 weird mips assembler behavior with jump and
  • I 类型指令的 MIPS 周期数 (addi)

    So on https en wikipedia org wiki Cycles per instruction https en wikipedia org wiki Cycles per instruction它说 对于多周期MIPS
  • 为什么MIPS中内存地址加4?

    如果某些内容存储在 0x1001 0000 处 则下一个内容将存储在 0x1001 0004 处 如果我是正确的 32 位架构中的内存块每个都是 32 位 那么0x1001 0002会指向32位的后半部分吗 首先 MIPS 架构中的内存地址
  • SIMD 和 VLIW 指令是一样的吗?

    SIMD 单指令多数据 和 VLIW 超长指令字 到底有什么区别 其中一个是另一个的子集吗 或者它们是两个完全不同的东西 完全不相关且正交 一台机器可以有一个或两个 或者两者都没有 SIMD 指令可以作为扩展添加到 VLIW ISA 但 V
  • 为什么X86中没有NAND、NOR和XNOR指令?

    它们是您可以在计算机上执行的最简单的 指令 之一 它们是我亲自实施的第一个指令 执行 NOT AND x y 会使执行时间和依赖链长度和代码大小加倍 BMI1 引入了 andnot 这是一个有意义的补充 是一个独特的操作 为什么不是这个问题

随机推荐