标签: mips

SRL 和 SRA 有什么区别?

使用说明sra和使用srl说明时有什么变化?我无法理解两者之间的区别。使用的语言是 MIPS 汇编语言。

sll $t1,$t0,2
sra $t2,$t0,2

sll $t1,$t0,2
srl $t2,$t0,2
Run Code Online (Sandbox Code Playgroud)

assembly mips bit-shift instructions

1
推荐指数
1
解决办法
2万
查看次数

如何知道MIPS指令生成哪些控制信号?

我正在用 Verilog 创建一个模拟。

我有一个内存模块,加载了 MIPS 指令,如下所示......

20082000
200d2030
8dad0000
240a0001
ad0a0000
..
..
..
Run Code Online (Sandbox Code Playgroud)

存储模块将指令输出到“控制”模块的输入端,该模块有以下信号:

RegDst、跳转、分支、MemRead、MemtoReg、ALUOp、MemWrite、ALUSrc、RegWrite

将为内存模块加载的支持指令列表生成信号值。add、addi等指令

我如何知道对于给定指令信号是真还是假?

assembly verilog mips cpu-architecture iverilog

1
推荐指数
1
解决办法
4049
查看次数

li $v0,10 , 在 Mips 中是什么?

我刚刚开始使用 Mips,所以这可能听起来很简单,但是:当我在没有
li $v0,10 指令的情况下 编写上面的代码时,我收到一条错误消息:内存地址超出范围 当我添加它时,它没有任何警告。 这意味着什么?

.text
.globl main
main:
 li $t1,27
li $t2,2
mulou $t3,$t1,$t2
li $v0,10
syscall
Run Code Online (Sandbox Code Playgroud)

assembly mips qtspim

1
推荐指数
1
解决办法
1万
查看次数

MIPS寻址模式下寄存器间接和基本加偏移之间的差异?

寄存器间接基本加偏移有什么区别,它如何影响您在MIPS架构上编写汇编的方式?我认为这意味着你只能在一条指令中引用寄存器,那个寄存器必须指向更多的指令?

architecture assembly mips addressing-mode

0
推荐指数
1
解决办法
1万
查看次数

MIPS中的char数组

我如何创建一个char数组并访问MIPS中的那些字符?我正在做一个项目,其中一部分就是这样做.我理解如何使用整数并且无法在线找到关于如何处理chars的任何参考,特别是我试图移植...

static char   hexdigits[16] = "0123456789ABCDEF";
Run Code Online (Sandbox Code Playgroud)

这是我失败的尝试:

hexarray: .word '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' #declare memory space for our hex array
Run Code Online (Sandbox Code Playgroud)

编辑:如果有人可以提供一个例子如何打印出其中一个项目,这将是非常有帮助的(你可以修改我想要的任何代码).因为我只是得到一个内存地址错误.

mips

0
推荐指数
1
解决办法
2万
查看次数

为什么.bss显式地将全局变量初始化为零?

我正在生成mips反汇编以模拟它.我需要有大数据来处理它,但我不想拥有大的汇编文件,所以我想要处理一个大的未初始化的数组(然后可能在我的模拟器中初始化它...).所以我需要这个数组是全局的.并且全局变量似乎放在.bss部分,以便在实际访问页面时进行初始化.问题是在我的二进制文件中,数组在.bss部分,但显式填充为零...如果我正确理解我在互联网上找到的内容,这不是预期的行为......有没有办法说编译器(或链接器,或者加载器......我不明白哪一个为此做了什么)在这个数组中没有真正归零?或者,我们可以在编译时有一个选项,还是一个C指令,说我们不希望这个数组用0初始化?(我尝试使用属性更改数组部分,但仍使用0初始化).

顺便说一句,我用objdump生成我的反汇编文件,它通常跳过零块,但我真的需要反汇编其他的零块,所以我使用"-z"选项.

我真正不明白的是,无论我看到的是什么,都说.bss部分并没有真正把二进制文件中的零写入...

c assembly gcc mips

0
推荐指数
1
解决办法
1691
查看次数

是否有更适合CISC或RISC的算法或编程风格?

似乎两者都是出于各种原因使用,ARM用于功耗,x86用于扩展功能.

我仍然很好奇,因为我的计算机科学文化有点空洞,像x86(或其前辈)这样的CISC芯片的真正目的是什么.

如果他们使用RISC,我们的计算机会更好吗(例如,如果微软将其内核和工具链移植到RISC,如MIPS或ARM)?或者作为一项任务完成任务是不可能的?

我正在阅读CISC的目的是能够接近更高级别的语言,我觉得这很奇怪.英特尔和微软之间是否有交易专注于x86?

algorithm x86 arm processor mips

0
推荐指数
1
解决办法
152
查看次数

如何运行Valgrind来查找我的嵌入式MIPSEL-linux盒子上的内存泄漏?

如何在嵌入式Linux机器上运行valgrind来查找主软件中的内存泄漏?

rcS脚本中,我运行如下:

./main_app
Run Code Online (Sandbox Code Playgroud)

如何将./main_app程序与valgrind联系起来?main_app进程永远不会终止.

我想不断将数据记录到文件中.此外,我想访问日志文件而不终止该main_app过程.我可以做telnet并可以访问日志文件.但问题是,除非处理程序关闭,我怎么能打开文件,即我不太明白哪个valgrind参数控制如何将内存泄漏记录到文件中.请帮忙!

valgrind mips embedded-linux

0
推荐指数
1
解决办法
3557
查看次数

汇编语言中or和ori之间有什么不同?

我正在做一个家庭作业,我很困惑我应该使用哪一个.我添加了什么命令.

assembly mips spim

0
推荐指数
1
解决办法
3296
查看次数

psuedo MIPS分支和链接命令

我的最终目标是以这种方式在MIPS中编写代码

temp = 0;
if (x == y)
   temp = 1
...rest of the program...
Run Code Online (Sandbox Code Playgroud)

我应该为==,!=,<=,> =,<,>写它

我想到了这样的事情:

li $t1 0
beq $r1 $r2 Temp1
/**rest of the program...**/

Temp1:
li $t1 1
(1) /** how do I return to rest of the program? **/
Run Code Online (Sandbox Code Playgroud)

我在mips中看到了BGEZAL命令(beq的insetad),该命令允许我放入(1)行

jr $ra
Run Code Online (Sandbox Code Playgroud)

但我没有找到适合所有情况的命令:bge,bne,neq等。

我的问题 :

所有情况下进行此分支和链接的简单方法是什么?

我的意思是,如果发生某些情况,请分支到标签,并将pc + 4的地址存储在$ ra中,以便返回代码?

另外,我无法创建另一个标签来表示程序的其余部分(并跳转它),我必须在$ ra中以某种方式返回,因为它是从基于Java的代码到mips的转换

谢谢。

assembly mips

0
推荐指数
1
解决办法
828
查看次数