标签: mars-simulator

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

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

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

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

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

在此输入图像描述

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

linker mips mips32 mars-simulator

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

Mips 参考表上的“PC”

我正在练习根据 Mips 参考表将 Mips 指令(beq $t5,$s0,循环)转换为二进制,并且有一系列指令(PC = PC + 4 + 分支地址)用于计算立即值“I”类型的指令,它一直引用“PC”。

电脑指的是什么?看来我应该寻找“循环”标签存储在内存中的位置:特别是找到该内存地址。

assembly mips program-counter mars-simulator

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

程序计数器值无效:0

我目前正在使用MIPS处理器下的汇编语言.我目前正在使用MARS模拟器,由于原因未知,每次运行后都会收到以下错误消息:

Go:运行try.s

错误:程序计数器值无效:0

Go:执行因错误而终止.

我得到这个错误消息独立于我正在使用的代码,只是想知道这是否是MARS模拟器中的错误或者是否是我缺少的东西.

assembly mips mars-simulator

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

火星MIPS模拟器无法正常运行,安装问题?

我已经下载了Mars MIPS Simulator .jar文件,我从oracle下载了java jdk文件.每当我打开jar文件时,IDE就在那里,但一切都是灰色的.我甚至无法编辑窗口中的文本.当您选择"执行"时,下面的框中会出现三个截止窗口,一个标题为"文本段",一个"数据段"和一个"标签".我认为这是一个失败的安装,但我不知道还能做什么.感谢您的任何帮助!

这是一个截图:

http://i.imgur.com/8O30Hzh.png

java mips mips64 java-8 mars-simulator

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

错误:"存储地址未在字边界上对齐"

我正在使用MARS MIPS模拟器并使用Digital Lab Sim.

我的代码的目的是在Digital Lab Sim上以十六进制显示数字0到15.

我收到了这个错误

Runtime exception at 0x00400024: store address not aligned on word boundary 0xffff0011
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码:

        .data
digitos:    .word 0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x67,0x77,0x7F,0x39,0x3F,0x79,0x71
contador:   .word 16
        .text

main:

    la  $t0,0xFFFF0011  

    la  $a0,contador    
    lw  $t1,0($a0)

    li  $t9,0       


    la  $t2, digitos    



loop:
    lw  $t3,0($t2)
    sw  $t3, 0($t0)         
    addi    $t9,$t9,1   
    addi    $t2,$t2,4   

    blt     $t9,$t1,loop
Run Code Online (Sandbox Code Playgroud)

该指令la $t0,0xFFFF0011是由错误负责的指令.0xFFFF0011控制左侧LED,0xFFFF0010控制右侧LED.

这是有趣的部分.如果我使用0xFFFF0010代码按预期工作,但如果我使用0xFFFF0011它不起作用.

我究竟做错了什么?

mips mars-simulator

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

MIPS 地址超出范围 (MARS)

我正在尝试编写一个简单的代码,将字符串和整数输入保存到一个数组中,然后将它们打印出来(稍后我还将添加另一个对它们进行排序的部分,但我必须先使其工作)。

.data
array:      .space  40  #10 elements array


in_name:
   .asciiz "\nInsert name: "
in_date:
   .asciiz "\nInsert date (mmdd): "
appt:
   .asciiz "\nList: "
spaz:       .asciiz " "

.text
main:       

    la  $s0, array      #load array in s0
    addi    $t0, $zero, 0       #t0=0 counter
    addi    $s1, $zero, 0       #s1=0 array size counter
            j    Input

Input:
        li  $v0, 4           
    la  $a0, in_date
    syscall             #ask date 
    li  $v0, 5          
    syscall             #read date
    add     $t1, $zero, $t0                #offset in t1
    add     $t1, $t1, $t1           #t1*2 …
Run Code Online (Sandbox Code Playgroud)

assembly mips mars-simulator

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

Convert Binary to Decimal in MIPS, Assembly MARS

I am trying to convert binary to decimal in the MIPS language, using the MARS simulator. The program accepts a binary number, and then does the conversion, by multiplying (shift left by the number's place $t9). Another way of saying that is multiplying each 1 digit by 2 raised to the power of the place, and summing that result.

I do not have a very good understanding of how values are stored and communicated between ascii, decimal, and the problem …

assembly base-conversion mips mars-simulator

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

Mips-如何在火星上运行多个文件

我正在尝试编写一个程序,让用户输入一个选项,它从另一个文件分支并运行一个程序。我试过寻找答案,但我没有任何运气。我将所有要使用的文件都放在同一个目录中,并将它们全部更改为 .global,然后进入设置以组合目录中的所有文件。

.data
options: .asciiz "Enter 1 for Roadway\nEnter 2 for Equipment\nEnter 3 for Labor\nEnter 4 for Total Projects Costs\n"

.text
.global main

main:
    li $v0, 4   
    la $a0, options
    syscall

    li $v0, 5
    move $t0, $a0
    syscall

    beq $t0, 1, option1
    #beq $t0, 2, option2
    #beq $t0, 3, option3
    #beq $t0, 4, option4

    li $v0, 10
    syscall

option1:
    #this is where I'd like to run code from another file

    jr, $ra
Run Code Online (Sandbox Code Playgroud)

assembly mips mars-simulator

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

为什么 MARS 的 .data 段从 0x10010000 开始,而不是像 Patterson 和 Hennessy 描述的那样从 0x10000000 开始?

在讨论 32 位 MIPS 架构时,Patterson-Hennessy 解释说静态数据段开始于0x 1000 0000,结束于0x 1000 FFFF,全局指针$gp默认设置为中间地址0x 1000 8000。据说堆是下一个,因此应该从 开始0x 1001 0000

然而,一些 MARS 实验告诉我,中间有一个额外的段,从0x 1001 00000x 1003 FFFF,因此堆仅从 开始0x 1004 0000。事实上,当我使用系统调用在堆上存储数组时,该数组将被存储在0x 1004 0000以后的位置。

.data当我在程序标题下初始化数据时,似乎会使用这个附加段。这让我感到困惑,因为我期望在下面初始化的数据.data被认为是静态的,因此应该存储在由全局指针控制的段中。

问题。MARS 标准表现出的行为吗?如果是,那么位于静态数据和堆之间的这个附加数据段与位于其前面的静态数据段有何不同?

memory assembly mips mars-simulator

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