mips相关内容

结构中的位是否得到保证

我有一个与结构位字段有关的问题,请参阅下面的内容,因为我对应该使用哪个关键字来最好地描述我的问题一无所知: 上下文:我正在为MIPS R3000A汇编指令编写反汇编程序,该指令在2000年初用于Playstation程序. 问题:我想知道是否在此代码中: struct指令{u32其他:26;u32 op:6;};//主要的:指令指令= *(指令*)(数据+ pc);printf(“ ..
发布时间:2021-05-04 19:51:25 其他开发

带有MS-Windows工具链的预构建MIPS交叉编译器

我在Linux机器上使用了MIPS交叉编译器,效果很好.现在,我需要在Windows上编译相同的应用程序. 我正在网上搜索一些针对MS-Windows的预构建的MIPS交叉编译器(带有工具链),但没有成功. 由于我不确定该怎么做,所以我要问是否有人知道这样的预构建工具链?或一些指南,如果可能的话,如何将我的Linux工具链转换为Windows? 谢谢. 解决方案 您应使用 ..
发布时间:2021-04-25 18:38:37 其他开发

为什么MIPS使用一个延迟槽而不是两个延迟槽?

在许多RISC体系结构中似乎都是这种情况.由于填充一个延迟时隙可以节省我们50%的浪费时间,为什么不给程序员一个机会使用两个时隙呢? 解决方案 在MIPS R2000上,ISA设计的经典MIPS I 1个分支延迟插槽足以隐藏分支延迟::是真的,如果我们总是可以填充延迟时隙,那么就不需要分支预测吗? Paul Clayton回答是的,在asm中填充分支延迟时隙会使分支预测无效在早期的MIPS ..
发布时间:2021-04-24 21:08:44 其他开发

在6级标量或超标量MIPS中,有多少条指令因未命中而需要杀死?

我正在使用6个阶段的流水线:F D I X0 X1W.有人问我,当发生分支未命中预测时,需要杀死多少条指令. 我想出了4.我想这是因为分支解析发生在X1中,我们将需要杀死分支之后的所有指令.在管道图中,看起来需要杀死流经管道的4条指令.那是对的吗? 我还被问到,如果管道是三宽超标量,则需要杀死多少人.我不确定这一点.我认为应该是12,因为您一次可以提取3条指令.正确吗? 解决方案 ..
发布时间:2021-04-24 21:07:48 其他开发

MIPS中是否存在执行存储数据危险?

在具有流水线和转发功能的MIPS架构上: 添加$ s0,$ t1,$ t2sw $ s0,0($ sp) 加法指令将在第3步(执行操作)准备好结果,但是我假定sw指令在第2步需要结果(指令解码和寄存器读取). David A. Patterson在《计算机组织与设计》一书中有一个已解决的练习:在以下代码段中查找隐患,并对指令进行重新排序,以避免任何管线停顿: lw $ t1,0($ ..
发布时间:2021-04-24 21:07:30 其他开发

关于否定mips中的符号整数?

我正在考虑如何对mips32中的带符号整数取反.我的直觉是使用2的补码的定义,例如:(假设 $ s0 是要取反的数字) 也不$ t0,$ s0,$ s0;1的补码addiu $ t0,$ t0,1;2's = 1's + 1 然后我意识到可以这样做: sub $ t0,$ zero,$ s0 所以...有什么区别?哪个更快?IIRC子程序将尝试检测溢出,但这会使速度变慢吗?最后,还有 ..

MIPS汇编中的C数组索引?

问题: 无效交换(int v [],int k){温度temp = v [k];v [k] = v [k + 1];v [k + 1] =温度;} 我的问题是为什么要在 $ t1 中添加int v [] ?(无论谁都没有评论,所以我假设 $ a0 是 v [] 和 $ a1 是 k). 答案: 交换:sll $ t1,$ a1,2加$ t1,$ a0,$ t1lw $ t0,0($ ..
发布时间:2021-04-19 20:41:58 C/C++开发

使用while循环遍历数组?-MIPS

我想遍历像这样的数字数组 .word 2,2,2,2,2,2,2,2,2,2,2,2,2,2.word 2,2,2,2,2,2,2,2,2,2,2,2,2,2.word 2,2,2,2,2,2,2,2,2,2,2,2,2,2.word 2,2,2,2,2,2,2,2,2,2,2,2,2,2 ,我想确保数组中的所有值均为2.现在这些是52个元素,因此每次我要检查是否所有的数组元素都为2 .. ..
发布时间:2021-04-16 20:02:03 其他开发

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

我是MIPS的新手,这让我感到完全困惑.我制作了一个程序来转换基数,并且在第一次运行时工作良好,但是当它循环时,它显示了循环先前迭代中其他寄存器的值.输出如下.我已经尝试了所有我能想到的东西,但我没有主意... 输入十进制数字:10以2为底的数字是00000000000000000000000000001010以4为底的数字是0000000000000022以16为底的数字是0000000A以8 ..
发布时间:2021-04-11 20:52:35 其他开发

测试值是否在两个范围之一内

我正在编写一个MIPS程序,该程序仅应使用大写或小写字符作为输入.我的程序使用字符的ASCII值工作. 我需要检查输入中的每个字符是否在65-90(A-Z)或97-122(a-z)的ASCII范围内.如果不在两个范围内,请跳过此字符并重复下一个字符.该怎么办? 编辑 这是我刚想出的一个解决方案,但是我敢肯定有一个不太丑陋的方法可以做到这一点? 功能:#将$ t0递增到输入的下一 ..
发布时间:2021-04-10 18:34:25 其他开发

MIPS addi指令对数组基数

我是MIPS的新手,并且很难弄清楚这段代码的含义……其中$ s6是数组A的开始: addi $ t0,$ s6,4 我不确定这是否意味着$ t0 = A [4]-或者-如果它表示$ t0 = A [0] + 4,则取A [0]中的值,然后加上四个,然后将其保存回A [0] 任何帮助将不胜感激. 先谢谢您! 解决方案 该行: addi $ t0,$ s6,4 其中 ..
发布时间:2021-04-09 20:48:44 其他开发

MIPS-阵列中的阵列索引

MIPS中的以下C代码是什么? f = A [B [i]] 有人告诉我它可以用6行完成,但还不知道怎么做. f 位于 $ t0 中, i 位于 $ t3 中, A [] 在 $ s0 中,而 B [] 在 $ s1 中.所有类型都是整数. 我能想到的最好的是 lw $ t5,$ t3($ s0);#不起作用,因为lw语法不接受寄存器作为偏移量lw $ t6,$ t5($ s1); ..
发布时间:2021-04-09 20:04:34 其他开发

Syscall和陷阱之间的区别

我想知道MIPS syscall和trap指令之间是否有任何区别.我找不到与此相关的任何内容,因此不确定是否有区别.陷阱似乎只是有条件的系统调用,但进行一些澄清可能会有所帮助. 解决方案 SYSCALL和TRAP指令均触发异常,但是产生的异常类型不同(SystemCall与Trap),并且操作系统将可能会以不同的方式处理它们. ..
发布时间:2020-11-01 21:13:44 其他开发