标签: mips32

实现处理器(mips单循环)

我有一个迷你项目,在这个项目中,我需要通过Verilog实现MIPS单周期处理器.在这里我写ALU和ALUControl和FileRegister,但我有一个问题,为此实现Pc(程序计数器)...我想要这个Pc支持分支和跳转.我需要支持分支的说明,但我不知道如何访问指令.请帮我实现InstructionMemory和Pc.这是我的代码:

module ALU(ALUctl, A, B, ALUOut, Zero);
input [3:0] ALUctl;
input [31:0] A,B;
output reg [31:0] ALUOut;
output Zero;
assign Zero = (ALUOut==0); //Zero is true if ALUOut is 0
always @(ALUctl, A, B) begin //reevaluate if these change
    case (ALUctl)
        0: ALUOut <= A & B;
        1: ALUOut <= A | B;
        2: ALUOut <= A + B;
        6: ALUOut <= A - B;
        7: ALUOut <= A < B ? 1 : 0;
        12: ALUOut <= ~(A | …
Run Code Online (Sandbox Code Playgroud)

verilog computer-architecture mips32

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

Stress-ng:RAM 测试命令

Stress-ng:我们可以使用stress-ng测试RAM吗?用于在 MIPS 32 设备上测试 RAM 的命令是什么?

stress-testing mips32 ubuntu-14.04

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

在 MIPS 程序集中使用逻辑移位的乘法

有人可以告诉我如何制作使用 MIPS 程序集中的移位进行乘法的代码吗?我不明白有一个数字 2^n 如何帮助我使用奇数被乘数进行乘法


我目前有这个代码,我正在尝试制作一个计算器

.text

li  $v0, 4 
la  $a0, ask_1
syscall

li  $v0,5
syscall
move    $s1, $v0


li  $v0, 4
la  $a0, ask_2
syscall

li  $v0,5
syscall
move    $s2, $v0

#sll    $s2, $s2, 3     #$s2 * $s2^3 = result
srl $s2, $s2, 1

li  $v0, 1
la  $a0, ($s2)
syscall


.data

ask_1:  .asciiz     "Enter Multiplier\n"
ask_2:  .asciiz     "Enter Multiplicand\n"
result: .asciiz         "The Answer is:\n"
Run Code Online (Sandbox Code Playgroud)

assembly mips bit-shift multiplication mips32

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

如何使用MIPS执行64位加法和减法?

我想执行64位加法和减法:

v1v0(HiLo) = a1a0 + a3a2使用MIPS汇编语言(a1a0(HiLo)第一个64位数字由两个32位数字组成,a3a2(HiLo)是第二个)

我有:

$a0 = 0xffffffff
$a1 = 0x0
$a2 = 0x1
$a3 = 0x0
Run Code Online (Sandbox Code Playgroud)

我是MIPS的初学者,我不知道如何处理携带.有人可以提供解释解决方案吗?

提前致谢!这是我正在使用的指令集:

http://www.cs.uregina.ca/Links/class-info/201/SPIM-IO/MIPSrefCard.pdf

assembly mips mips32

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

Mips Linux:将内核Panic记录到mtd分区中

我们在基于MIPS的嵌入式设备领域遇到内核恐慌。如何在MTD分区中记录内核恐慌跟踪?我们是否必须仅将跟踪写入MTD还是可以覆盖NFS?谁能解释一下在出现紧急情况之后,如何获得有用的内核跟踪。

linux kernel panic mips32

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

MARS,MIPS 汇编器,将两个文件链接在一起?

我有一个快速的问题。我正在使用 MARS 汇编器(在 MIPS 指令集中编程)并且我有两个 MIPS 文件。一个文件包含我要运行的主要方法,它调用另一个文件中的函数。我的函数前面有.globl指令,但每次我尝试编译我的程序时,它都会说

在符号表中找不到符号“print_hex”。

以下是更多背景信息的屏幕截图: 在此输入图像描述

标签print_hex位于名为 print_hex.s 的文件中。

在此输入图像描述

如何将这两个文件链接在一起?最后,我如何告诉 MARS 在执行开始时调用特定标签,例如我希望它调用main

linker mips mips32 mars-simulator

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

mips分支延迟槽是否通过连续分支传播?

我正在玩分支延迟插槽.在垃圾邮件上试过.

j some
j a 
j b 
j c 
j d 
ori $9, $0, 13

some:
a:  
b:  
c:  
d:  
Run Code Online (Sandbox Code Playgroud)

对于我惊讶的是它改变了$ 9至13所以我的问题是可以延迟槽传播或者这是一个垃圾信息的事情,真实MIPS32处理器不会发生?如果这是预期的行为能有人给我发生的事情有一点启示?

pipeline mips mips32

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

MIPS组件对齐对齐n

该指令.align n在数组中做什么?
更具体地说,假设我具有以下代码部分:

array: .align 2
       .space 800     
Run Code Online (Sandbox Code Playgroud)

它的重要性是什么,为什么不跳过它并使用

       .space 800
Run Code Online (Sandbox Code Playgroud)

这是学校的作业理论问题。

assembly mips mips32 qtspim

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

如何在MIPS中实现NOT操作?

我是MIPS的新手,我正在尝试判断字符串中的每个字符是否为alpha.我使用ASCII码来帮助我判断它,而我发现没有代表larger than含义的指令.所以我尝试not从我所知道的指令中实现一个操作.这是我的代码的一部分:

isAlpha:
  sltiu $t0, $s2, 123
  sltiu $t1, $s2, 97
  nor $t1, $t1, $t1
  and $t0, $t0, $t1

  sltiu $t2, $s2, 107
  sltiu $t3, $s2, 81
  nor $t3, $t3, $t3
  and $t2, $t2, $t3

  or $t0, $t0, $t2

  bne $t0, $zero, countAlpha
  jr $ra
Run Code Online (Sandbox Code Playgroud)

但是,我无法得到我想要的结果.我设置了一个断点,发现我的not操作似乎有一些问题: 判断后

在我的例外中,$ t1应该是1而$ t2应该是0,而实际情况则不是.

我的代码中哪里错了?有没有办法not在MIPS中实现操作?或者是否有更好的方法larger than在MIPS中实现意义?提前致谢.

mips mips32

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

Mips溢出检测,打印结果

我写下这个简单的代码只是为了验证 Mips 处理器中的溢出以进行最终测试:

.data
.text
.globl main
 main:
    li $s0, 2000000000
    li $s1, 2000000000


    addu, $s2 , $s0, $s1

    li $v0, 1
    move $a0, $s2
    syscall
    j end


    end: 

    li $v0, 10
    syscall
Run Code Online (Sandbox Code Playgroud)

它当然会导致 0xee6b2800,十进制 -294967296,只是因为 mips 以二进制补码对数字进行编码,并且它将 MSB 识别为符号位(1 及其负数)。我如何实现一个循环来打印(在同一程序中)正确的值?(在本例中为 4 Bil,4x10^9)非常感谢

mips overflow mips32

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