mips相关内容

MIPS 汇编:从整数转换为十六进制

我发现了这个代码片段,我相信它可以将整数转换为十六进制.但是,我根本不关注它.我添加了说明我认为正在发生的事情的评论,但我不知道为什么要这样做.所以,假设我正确地记下了每一行在做什么,有人可以向我解释为什么要这样做吗?至于它如何以任何方式帮助转换为十六进制? $a0 是整数值 $a1 是结果的地址 addi $t0, $0, 48 #设置 $t0 等于 48sb $t0, 0($a ..
发布时间:2022-01-13 08:31:26 其他开发

浮点加法与浮点乘法的相对速度是多少

一两年前,编写数字代码以避免使用乘法和除法而使用加法和减法是值得的.一个很好的例子是使用前向差异来评估多项式曲线,而不是直接计算多项式. 情况是否仍然如此,或者现代计算机架构已经发展到 *,/不再比 +,- 慢很多倍的地步? 具体来说,我对在具有大量板载浮点硬件的现代典型 x86 芯片上运行的已编译 C/C++ 代码感兴趣,而不是试图在软件中执行 FP 的小型微型计算机.我意识到流水线 ..
发布时间:2022-01-06 12:52:12 其他开发

C/C++ 到 MIPS 汇编

我知道要编译为程序集,我应该将 -S 选项与 gcc 或 g++ 一起使用,但是我如何获得 MIPS组装? 我试过了 g++ -march=mips2 dll.c 但这会导致错误 dll.c:1:0: 错误:-march= 开关的错误值 (mips2) 我看到编译命令 mips_gcc 的建议,但我找不到如何安装该编译器. 我使用的是 64 位 Ubuntu,如果有帮助的话. ..
发布时间:2022-01-04 21:47:35 其他开发

循环遍历阵列 MIPS 程序集

我正在编写一个程序,它循环遍历 10 个数字的数组.前 9 个元素的值大于 0,第 10 个元素的值为 0.当遇到 0 时,循环应该中断. i=0;而(A[i]!=0){A[i]=A[i]+1;我++;} 我知道如果寄存器的值等于 0,我可以使用 'beq' 来中断循环.但是我对操作内存中的值知之甚少. 这是我第一次使用 MIPS,你会发现它很混乱.如果你不能为我修复它,你能给我一些指点 ..
发布时间:2021-12-26 18:41:30 其他开发

MARS MIPS 和结构节点

typedef struct node {整数数据;结构节点*下一个;节点L; 假设我想用 MIPS 汇编语言翻译上述声明,我该怎么做?除了分配内存(使用 syscall 9),这是在 .text 段中完成的,.data 段怎么样?另外,对齐怎么样? 解决方案 在提到代码之前,你需要明确你要创建的结构是静态数据(数据段)、本地数据(堆栈)还是动态数据分配的数据(堆).每个都有不同的分配方 ..
发布时间:2021-12-23 17:32:55 其他开发

有没有办法使用 gcc 将 C 转换为 MIPS?

我完成了一个类的 C 到 MIPS 的转换,我想根据程序集检查它.我听说有一种配置 gcc 的方法,它可以将 C 代码转换为 MIPS 架构而不是 x86 架构(我的计算机使用 Intel i5 处理器)并打印输出. 在Ubuntu(gcc自带)中运行终端,我用什么命令配置gcc转换为MIPS?还有什么我需要安装的吗? 编辑:让我澄清一下.请阅读这个.我不是在寻找要使用的编译器,也不是 ..
发布时间:2021-12-18 22:28:38 其他开发

为什么我的 MIPS 基本转换器会在当前值之后打印出前一个循环中的值?

我对 MIPS 非常陌生,这让我完全困惑.我制作了一个转换基数的程序,它第一次运行良好,但是当它循环时,它会显示来自循环先前迭代的其他寄存器的值.输出如下.我已经尝试了我能想到的所有方法,但我没有任何想法...... 输入一个十进制数:10基数 2 中的数字是 000000000000000000000000000001010基数 4 中的数字是 0000000000000022以 16 为底的 ..
发布时间:2021-12-18 09:18:20 其他开发

MIPS 如何在不停止的情况下处理前一条 ALU 指令的分支?

addiu $6,$6,5bltz 6 美元,L5 美元没有...$L5: 这如何安全而不会停顿,这是经典 MIPS 甚至无法做到的,除非缓存未命中?(MIPS 最初代表没有互锁流水线级的微处理器,并且有一个加载延迟槽而不是互锁.) 原始 MIPS I 是经典的 5 级 RISC IF ID EX MEM WB 设计,它通过 一个单一的分支延迟槽,通过在 ID 阶段及早检查分支条件(更正 ..
发布时间:2021-12-18 08:41:43 其他开发

MIPS 中的 if 中的多个条件

MIPS 提供了分支指令,如相等分支、不等于寄存器分支、小于或等于零分支、大于或等于零分支等等......所有分支指令只使用两个操作数和一个条件.如果我们在 if 语句中突然遇到多个条件会发生什么. 所以问题是如何编写 MIPS 代码: if( (ac ) || (c==d)) {}别的{} 请帮忙解决 if 语句中的这种多重条件. 解决方案 你可以改写: ..
发布时间:2021-12-12 14:02:04 其他开发

错误“gnu/stubs-32.h:没有这样的文件或目录"在编译 Nachos 源代码时

我正在尝试在我的笔记本电脑上安装 Nachos,而我在笔记本电脑上安装了 Ubuntu 11.04. 代码是用 C 语言编写的,所以为了构建它,我假设我需要交叉编译器.这就是我的问题所在.我使用命令 下载了MIPS交叉编译器的源代码 wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linu ..
发布时间:2021-12-12 12:00:30 其他开发

如何计算跳转目标地址和分支目标地址?

我是汇编语言的新手.我正在阅读 MIPS 架构,但我坚持使用跳转目标地址和分支目标地址以及如何计算每个> 其中. 解决方案 (在下面的图表和文字中,PC是分支指令本身的地址.PC+4code>是分支指令本身的结束,也是分支延迟槽的开始.绝对跳转图中除外.) 1.分行地址计算 在 MIPS 中,分支指令只有 16 位偏移量来确定下一条指令.我们需要一个寄存器添加到这个 16 位值 ..
发布时间:2021-11-30 11:14:37 其他开发

64 位应用程序的内存布局

64-bit OS 指的是通用寄存器的位宽.它能够一次处理 64 位(数据 + 操作). 我们知道,为了让 64 位系统真正有用,程序员需要编写 64 位应用程序. 但是,我想知道 32 位应用程序和 64 位应用程序之间的区别是什么?我不是在问编译 64 位应用程序需要进行哪些配置更改;相反,我想知道两个应用程序在内存中的结构差异. 例如,Linux 上的 C 程序在内存中通常 ..
发布时间:2021-11-25 06:35:19 C#

如何在 x86 平台上运行 MIPS 二进制文件?

有没有办法在 Linux x86/x86-x64 机器上运行 MIPS 二进制文件?我有一些 Enigma2 机顶盒(也基于 Linux)的应用程序,我想在 x86/x86-64 机器上运行.这些插件仅适用于 MIPS 处理器. 解决方案 关键字是 "emulator".最著名的模拟器是 qemu,它几乎可以模拟任何架构,但也有很多 MIPS您可以在 Linux-MIPS wiki 中找到 ..
发布时间:2021-11-25 06:16:01 服务器开发

MIPS 中的二维数组

我在网上和这个网站上搜索过,我找不到在 MIPS 中实现二维数组的好例子.我希望能够看到一个示例,说明如何遍历数组以将数据放置在特定索引处以及如何打印出如下所示的数组. 例如一个 5x5 数组,其中 $ 将是每个索引中的数据. a b c d e1 $ $ $ $ $2 $ $ $ $ $3 $ $ $ $ $4 $ $ $ $ $5 $ $ $ $ $ 解决方案 您可以根据一维数组 ..
发布时间:2021-11-18 04:14:22 其他开发

是否可以在线程之间共享寄存器?

我知道当操作系统/硬件在不同线程的执行之间切换时,它会管理存储/恢复每个线程的上下文,但是我不知道很多细节.我的问题是:是否有任何寄存器可用于在线程之间共享信息?在 x86 中?米普?手臂?等等,.linux?窗户? 非常感谢任何有关如何做到这一点的建议. 解决方案 你的问题乍一看似乎很有道理.其他人试图直接回答这个问题.首先我们有两个相当模糊的概念, 主题 注册 如果 ..
发布时间:2021-11-17 22:02:56 服务器开发

预取指令

似乎预取使用的一般逻辑是可以添加预取,前提是代码忙于处理,直到预取指令完成其操作.但是,似乎如果使用过多的预取指令,那么它会影响系统的性能.我发现我们首先需要没有预取指令的工作代码.稍后我们需要在代码的各个位置进行预取指令的各种组合,并进行分析以确定由于预取而实际上可以改进的代码位置.有没有更好的方法来确定应该使用预取指令的确切位置? 解决方案 在大多数情况下,预取指令几乎没有好处,甚至在 ..
发布时间:2021-11-17 21:45:41 其他开发

有效地将 CPU 寄存器中的所有位设置为 1

要清除所有位,您经常会在 XOR eax, eax 中看到异或.反面也有这样的把戏吗? 我能想到的就是用额外的指令反转零. 解决方案 对于大多数具有固定宽度指令的体系结构,答案可能是符号扩展或反转的单指令mov立即,或 mov lo/high 对.例如在 ARM 上,mvn r0, #0(不移动).看到的gcc ASM输出用于x86,ARM,ARM64,和MIPS,在 Godbolt ..
发布时间:2021-11-17 21:37:10 其他开发