MIPS 伪指令、替换

2023-12-26

经过研究后,我发现这只是获得相同结果的方法的替代。如果我错了,请纠正我。

example:

move $s0, $t1

可以替换为:

add $s0, $zero, $t1 

问题:

怎样才能更换lw, la, sw, bne?


是的move指令可以并且被替换为add操作说明。

关于伪指令的一些背景:MIPS 是一种 RISC(精简指令集计算机)架构,这意味着您可以使用的指令数量相对较少。这种简单性可以带来更快的性能,但代价是更复杂的操作需要多个指令。伪指令是代表一个或多个其他更复杂操作的“假”指令。

关于你的问题:

lw, sw, and bne不是伪指令。它们全部由一条 MIPS 汇编指令执行。

la,或加载地址,是一条伪指令。la可以分解为lui指令和ori操作说明。在 32 位 MIPS 架构上,每条指令以及每个寄存器的大小都是 32 位。因此,为了存储 32 位地址,必须先获取最高有效(高位)16 位,然后再获取最低有效(低位)16 位。

The lui,或加载上立即数,获取立即数字段并将其左移 16 次并将其存储在临时汇编器寄存器中。这ori指令对临时寄存器和立即值执行按位或操作,并将完整地址存储在指定的初始寄存器中la操作说明。

Edit:例如,要获取字符串的地址,您可以在函数中使用以下代码段:

    la  $a0, msg    # pseudo-instruction to load the address of the label str

你也会有msg其他地方定义:

.data               
msg: .asciiz "This is a string"

在 SPIM 中运行此示例后,la指令被翻译成:

    lui $1, 4097 [msg]
    ori $4, $1, 0 [msg]

$1是临时汇编寄存器$4正在注册a0这是传递给最初的参数la操作说明。

参考:MIPS指令集 http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html以及仅仅进行大量的 MIPS。尝试在模拟器中运行每条指令,例如QTSPIM http://spimsimulator.sourceforge.net/看看你会得到什么。

也可以看看:lui 4097 https://stackoverflow.com/questions/8380135/mips-assembly-lui-t0-4097 and 加载地址 https://stackoverflow.com/questions/12841517/mips-programming-load-address?rq=1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MIPS 伪指令、替换 的相关文章

  • Android SDK 管理器中的 MIPS 系统映像是什么?

    对于每个 SDK 我都有一个安装解决方案MIPS system image 它是什么 它有什么作用以及何时有人使用它 如果我不安装它会发生什么 它是什么 它是一个模拟器映像 可模拟具有 MIPS CPU 而不是 ARM 或 x86 CPU
  • MIPS汇编中$是什么意思?

    什么是 在 MIPS 汇编语言中是什么意思 举个例子 Add 28 R4 R3 表达式中的美元符号是什么 在汇编程序中 符号 通常表示两种不同的含义 数字前缀表示该数字以十六进制书写 本身是一个数值表达式 其计算结果为 当前位置 即组装下一
  • 如何检测是否存在重复模式

    我的问题不是特定于语言的 我可能会在 C 或 Python 中实现它 除非某种语言的特定功能可以帮助我获得我想要的东西 是否有任何人都知道的某种算法可以帮助我确定数字列表是否包含重复模式 假设我有几个数字列表 12 4 5 7 1 2 1
  • MIPS 是字节可寻址的

    我一直在观看以下 URL 上解释 MIPS ISA 的讲座 据我目前的理解 对于32位MIP 主存储器有一个32位地址输入总线 存储器中的每个插槽保存8位 因此每个地址可以引用8位存储器 这就是它的字节可寻址的原因 由于寄存器大小是 32
  • MIPS:将 BEQ 计算为十六进制机器代码

    我有一个作业 必须将 MIPS 指令转换为其十六进制机器代码 我知道如何转换 add addi lw 等指令 但是当它转换为 beq 之类的指令时 我感到困惑 我如何将这个 beq 转换为十六进制 0x00400108 beq t3 t5
  • 针对 MIPS 的 Microsoft Visual Studio 2010 编译

    我试图弄清楚如何在 Visual Studio 中编译一个简单的 hello world 但适用于 MIPS 处理器 遵循 MS 上发布的指南website http msdn microsoft com en us library ms2
  • 寻找《财富》算法的伪代码

    如果曾经处理过用于生成 Delaunay 三角剖分的 财富 算法的人向我提供该算法的相当低级的伪代码 我将非常感激 我读过维基百科上的一个 但它有点令人困惑 而且看起来很高级 而且我能找到的任何一段代码都存在原始 C 实现的不便 我想用 C
  • 检查二叉树是否是二叉搜索树的伪代码 - 不确定递归

    我的作业是编写伪代码来检查有效的二叉树是否是搜索二叉树 我创建了一个数组来保存树的有序值 如果有序值按降序排列 则意味着它确实是 BST 但是 我在方法 InOverArr 中的递归方面遇到了一些问题 我需要更新数组的索引 以便按照值在树中
  • 如何实现 if(x >= '0' && x <= '9') 范围检查,如 MIPS 中的 isdigit ?

    我编写了以下函数来检查字符是否是数字 IsDigit tests a if a character a digit or not arguments a0 character byte return value v0 1 digit 0 n
  • 如何在不使用内置指令的情况下在 MIPS 汇编中实现乘法和除法?

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

    这实际上不是家庭作业 我只是在下周开始计算机科学之前浏览一本离散数学书中的一些问题 不管怎样 其中一个问题要求我编写一个程序来执行这个算法 它解释了 我所困惑的部分是如何获取 9 位数字并将其 拆分 为单个整数 以便可以对每个数字执行计算
  • AVL树:在O(logn)时间内找到两个值之间的键中数据值最小的键

    所以我得到了一棵AVL树 我试图至少找出伪代码 以在两个值 k1 和 k2 之间的所有键中找到具有最小数据值的键 这是假设每个节点中存储的字段数据是整数 我想确保我的伪代码在 O logn 时间内运行 我知道我可以通过在节点结构中存储一个额
  • “Skipcond”在 MARIE 汇编语言中如何工作?

    我正在尝试理解 MARIE 汇编语言 我不太明白skipcond为了 做类似的事情 lt or gt 或乘法或除法 我正在采用这个简单的程序 x 1 while x lt 10 do x x 1 endwhile 我不明白的是如何使用某些跳
  • GStreamer 上的“列入黑名单”是什么意思?

    我正在尝试交叉编译 GStreamer 版本是1 2 3 主机PC的操作系统是x86 linux 目标系统的操作系统是MIPSEL linux操作系统 我成功为目标设备编译了 gstreamer 和插件 和gst launch 1 0可以被
  • MIPS 在程序中使用 $s0... 等注册并最终恢复它是否优雅

    我在 MIPS 教程中读到 只有寄存器 s0 s7 在过程调用中被保留 但我认为 也许我错了 创建有副作用的程序并不优雅 我认为程序应该只更改 v0 v1 寄存器和堆栈 如果需要的话 我是对的吗 所以我认为在我的程序中我只能使用 t0 t9
  • I 类型指令的 MIPS 周期数 (addi)

    So on https en wikipedia org wiki Cycles per instruction https en wikipedia org wiki Cycles per instruction它说 对于多周期MIPS
  • 如何引用所有正在运行的 Excel 应用程序实例(包括隐藏的和没有工作簿的实例)的 COM 对象?

    如何获取每个正在运行的 Excel 应用程序实例的完整引用列表 无论其工作簿数量和可见性状态如何 我知道我可以使用 Windows API 来查找每个 Excel 工作簿窗口 其窗口类名称EXCEL7 让他们的句柄与AccessibleOb
  • MIPS 汇编不支持“.set noat”吗?

    目前 我正在学习GNU as 并在 info as 中找到了很多有用的信息 我发现 set noat 在MIPS指定的代码中使用 但是当在 info as 中搜索该指令时 我在节点 alpha指令 中找到了它的解释 但在 MIPS Depe
  • 基于 MIPS 的 codesourcery 工具链的编译参数?

    我在我的 WIN 7 机器上安装了用于 mips32 架构的 codesourcery 交叉编译工具链 我想首先为我的路由器编译一个基于 MIPS32 的简单 阶乘 二进制文件 在网上搜索了一下 我发现它是基于MIPS32 big endi
  • 汇编PC相对寻址模式

    我正在研究数据路径 并一直在尝试理解分支指令 这就是我的理解 在 MIPS 中 每条指令都是 32 位 这是 4 个字节 所以下一条指令将是四个字节之外 举个例子 我说PC地址是128 我的第一个问题是理解这个128意味着什么 我目前的信念

随机推荐

  • GWT JSNI 支持回调吗?

    我正在构建一个使用 Web SQL 本地存储的 GWT 应用程序 http dev w3 org html5 webdatabase http dev w3 org html5 webdatabase 问题是 Web SQL API 使用回
  • Azure CosmosDb:排序项需要范围索引

    我正在通过 Azure 门户 查询资源管理器 执行简单的查询 这是我的查询 SELECT FROM c WHERE c DataType Fruit AND c ExperimentIdentifier prod AND c Param b
  • 由于 Eclipse 中的 Java 堆空间和一个小型 Android 应用程序,无法执行 dex

    我有一个 Android 应用程序 只有一个 jar 导入 大小为 4 mb Symjahttps code google com p symja https code google com p symja 实际上 项目中的唯一代码是创建一
  • Python GTK +3:通过单击列对树视图进行排序

    我希望能够通过单击列来按列对树视图进行排序 我只是使用从文档中获取的流行示例作为参考 https python gtk 3 tutorial readthedocs io en latest treeview html https pyth
  • 从 JSON 生成 Java 类?

    在Java Maven项目中 如何从JSON生成java源文件 例如我们有 firstName John lastName Smith address streetAddress 21 2nd Street city New York 当我
  • MySQL 和 Python Select 语句问题

    感谢您抽时间阅读 这将是一个很长的帖子来解释这个问题 我无法在所有常用来源中找到答案 问题 我在使用 python 的 select 语句从 mysql 数据库中的表中调用数据时遇到问题 系统及版本 Linux ubuntu 2 6 38
  • 背包问题(经典)

    所以我必须在课堂上解决背包问题 到目前为止 我已经提出了以下建议 我的比较器是确定两个主题中哪一个是更好的选择的函数 通过查看相应的 值 工作 元组 我决定迭代工作量小于 maxWork 的可能科目 为了找到在任何给定回合中哪个科目是最佳选
  • raw_input() 在输入后才会显示提示

    它实际上比标题暗示的更进一步 如果我在 main 中的任何地方有 raw input 那么在用户输入输入之前不会发生任何事情 包括在调用 raw input 之前应该发生的任何函数调用或输出 这是我的代码的一个非常简单的示例以及它运行时发生
  • Highcharts:每个系列是否可以有单独的绘图选项?

    我想在图表上有两个散点系列 一个线宽为 1 另一个没有线宽 据我了解 plotOptions适用于指定类型的所有图表 因此所有散点图要么有线宽 要么没有 是否可以将plotOptions应用于特定系列 除了下面列出的成员之外 该特定类型图的
  • 如何在 vue.js webpack 项目上正确设置 favicon.ico?

    我创建了一个vue webpack项目使用vue cli vue init webpack myproject 然后在下面运行该项目dev mode npm run dev 我收到这个错误 无法加载资源 服务器响应状态为 404 未找到 h
  • 如何在 SAML 2.0 Web 浏览器 SSO 的 AuthnRequest 中识别主体

    我是 SAML 新手 在完全理解完整的 SAML2 SSO 流程方面遇到了一些困难 具体来说 当服务提供商使用元素响应资源请求时 元素中的哪一部分数据标识要由身份提供商验证的主体 即用户 例如 在以下 AuthnRequest 中似乎没有任
  • scipy.stats.binned_statistic_dd() 中的输出

    我正在尝试使用scipy stats binned statistic dd http docs scipy org doc scipy reference generated scipy stats binned statistic dd
  • 安装tensorflow 2有问题

    我想练习tensorflow 2 但我尝试在anaconda环境中安装它失败了 我的问题是 如何安装tensorflow 2 如果可以在 anaconda 环境中完成 在我看来会更方便 我不需要理解下面的错误信息 只要我能使用tensorf
  • 使用代码中的“fb_ref”参数跟踪来自 Facebook 的点赞按钮推荐

    我们想使用属性fb ref 点赞按钮中的 ref 参数 以便跟踪推荐点击和转化 您是否有关于如何在我们的页面上进行此操作的教程或示例 当您使用ref点赞按钮上的参数 点击返回由该点赞按钮生成的网站 在引荐来源网址中包含两个额外参数 fb r
  • 在哪里可以阅读有关编程的内容? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ASP.NET MVC 将列表传递给 RouteData QueryString

    将值列表作为查询字符串传递的推荐方法是 www site com search value 1 value 2 value 3 value 4 ASP NET 很好地处理了这个问题 string value QueryString Get
  • 文件传输详细信息持续绑定,直到使用 WPF 在窗口中传输文件

    我已经创建了将文件从客户端传输到服务器的项目 我已经完成了文件传输并获取了文件传输的详细信息 例如文件名 something avi 和传输的文件百分比 10 如下所示 每当我传输文件时 我都会使用下面的事件处理程序来了解该文件转移的详细信
  • 如何进入封闭班? [复制]

    这个问题在这里已经有答案了 I know Class getDeclaredClasses 可以获取它声明的所有类 但不包括匿名类 我想知道有没有办法通过封闭类获取所有封闭类 例如 我想获取定义在中的所有封闭类Root用于测试目的 clas
  • 如何在 WPF 中创建可拖动到主窗口之外的面板?

    尝试在 Visual Studio 2008 中复制对接控件 我的应用程序为 FAA 重播 RADAR 环境 并且我希望双显示器用户能够将控制面板拖动到另一个显示器 以使主画布保持清晰 此功能类似于将 VS 中的不同面板拖到主窗口之外的方式
  • MIPS 伪指令、替换

    经过研究后 我发现这只是获得相同结果的方法的替代 如果我错了 请纠正我 example move s0 t1 可以替换为 add s0 zero t1 问题 怎样才能更换lw la sw bne 是的move指令可以并且被替换为add操作说