标签: mips

MIPS提取地址未在字边界上对齐,使用.align 4,仍然没有去

有任何想法吗?为什么我得到:运行时异常在0x00400020:取字地址未在字边界上对齐0x00000007问题行是:lw $ s1,0($ a1)#copy arg2 =数组大小

.data
    .align 4 #added this, didnt work
    size:   .word   7
    .align 4 #added this, didnt work
    search: .word   30
    .align 4 #added this,didnt work
    array:  .word 10,20,30,40,50,60,70
    .align 4

.text

main:

            la  $a0,array   #$a0 = address of array
            lw  $a1,size    #a1 = size of array
            lw  $a2,search  #$a2 = search key


COUNT:
            lw $s0,0($a0)   #copy arg1 = address array
            addi $s1,$zero,7
            lw $s1,0($a1)   #copy arg2 = size of array
            lw $s2,0($a2)   #copy arg3 = …
Run Code Online (Sandbox Code Playgroud)

mips alignment

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

MIPS程序集:如何在.data部分声明整数值?

我正试图用MIPS汇编语言使用MARS模拟器弄湿我的脚.

我现在的主要问题是如何初始化一组内存位置,以便稍后通过汇编语言指令访问它们?

例如,我想初始化地址0x1001000 - 0x10001003,其值为0x99,0x87,0x23,0x45.我认为这可以在我的汇编程序的数据声明(.data)部分完成,但我不确定语法.这可能吗?

或者,在.data部分中,如何指定将整数值存储在某个内存位置(我不在乎哪里,但我只想在某处引用它们).所以我正在寻找C等价于"int x = 20,y = 30,z = 90;" 我知道如何使用MIPS指令,但是可以在MIPS汇编程序的.data部分声明类似的内容吗?

assembly mips

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

什么是MIPS组装的最佳免费IDE?

有人知道MIPS汇编的IDE有代码助手,可视化......?

ide assembly mips

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

MIPS指令集移动vs add/addi 0用于存储值?

我目前正在学习计算机组织和汇编语言课程,主要使用MIPS指令集来教授汇编语言.

我注意到教授在网上发布的许多例子都使用add或addi将值移动到$ a0参数寄存器中,用于调用打印服务,如下所示......

# store the first integer in $a0 and print
add $a0, $zero, $t0
li $v0, 1
syscall
Run Code Online (Sandbox Code Playgroud)

要么...

# store the first integer in $a0 and print
addi $a0, $t0, 0
li $v0, 1
syscall
Run Code Online (Sandbox Code Playgroud)

我也注意到一些在线的例子,其他人只是使用移动指令完成同样的事情,如下所示...

# store the first integer in $a0 and print
move $a0, $t0
li $v0, 1
syscall
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用add或addi指令优先于简单地使用move吗?如果是这样,为什么?是否存在性能差异或仅仅是品味问题?

assembly mips

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

为什么MIPS中的内存地址增加4?

如果某些东西存储在0x1001 0000,则下一个存储在0x1001 0004.如果我是正确的,32位架构中的存储器块各为32位.那么0x1001 0002会指向32位的后半部分吗?

memory mips

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

加载词和移动之间的区别?

有什么区别

ldw r8,0(r4)

mov r8, r4

加载字表示"从内存中复制"但是当从r4加载字复制时,它是从寄存器复制而不是从内存中复制吗?

assembly mips nios

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

什么是MIPS首字母缩略词中的"互锁管道"?

我正在经历一个MIPS处理器架构.

根据本教程,它指出:没有互锁管道阶段的微处理器 http://en.wikipedia.org/wiki/MIPS_architecture

流水线操作的一个主要障碍是某些指令(如除法)需要更长的时间才能完成,因此CPU必须等待将下一条指令传递到流水线之前.
该问题的一个解决方案是使用一系列互锁,允许阶段指示它们正忙,暂停上游的其他阶段.
Hennessy的团队认为这些联锁是主要的性能障碍,因为他们必须与CPU中的所有模块进行通信,这需要时间,并且似乎限制了时钟速度.
MIPS设计的一个主要方面是将所有指令的每个子阶段(包括高速缓存访​​问)都安装到一个周期中,从而消除了对互锁的任何需求,并允许单周期吞吐量.

这个链接说:--- https://www.cs.tcd.ie/Jeremy.Jones/vivio/dlx/dlxtutorial.htm

issue a "stall" instruction instead of a nop instruction upon a stall
Run Code Online (Sandbox Code Playgroud)

Interlock Pipeline到底有什么缺点?
为什么路由器更喜欢采用MIPS架构的处理器?

mips

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

了解程序集MIPS .ALIGN和内存寻址

我正在学习这门课程,而且我真的很难理解指令的.align概念.

这是一个我无法理解的例子:

在此输入图像描述

我知道在数据段内部有地址,从0x10010000,0x10010020开始等.

我知道,在每个地址内,有8个内存字段,每个字段有32位.

现在,我不明白的是,var2地址0x10010010内的方式和原因是什么?str1在地址0x10010003内,因为我们保留了3位var1.

最后一点是,指令究竟.align' doing? when I tested it in Mars4, it only shifted the data into the next memory field when I used对齐3`及以上,但我并没有真正得到它.

我很抱歉,如果这是非常令人困惑的家伙,我在这里有点绝望.

assembly mips

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

如何使用MIPS $ k0和$ k1寄存器

我想知道,MIPS架构中有什么$k0$k1注册.正如WikiBooks上的MIPS汇编一样

k个寄存器保留供OS内核使用.

但我找不到任何有用的东西?以及如何使用它们?

谢谢.

assembly mips cpu-registers

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

LLDB 是否与 gdbserver 兼容(用于调试交叉编译的代码?)

我是一名 CS 学生,刚刚学习mips了课堂基础知识(Patterson & Hennessy + spim),我正在尝试找到一种mips调试解决方案,允许在调试过程中执行任意指令。

尝试使用 gdb(所以你知道为什么不建议这样做)

推荐的mips交叉编译工具链是qemuand gdb,参见mips.com 文档和相关问答

gdbcompile code命令不支持mips-linux-gnu-gcc,据我所知,请参阅gdb 文档(“重定位目标文件”)和相关的Q/A。我得到的错误mallocmmap和无效的内存错误(显示的东西是想错了与即席连接gdb尝试使用时执行)compile codemips-linux-gnu-gcc,甚至过滤出硬编码的编译参数后mips-linux-gnu-gcc不承认。

实际问题

lldb有一个类似的命令expression,请参阅lldb 文档,我有兴趣lldbqemu. 该expression命令也依赖于clang而不是gcc,但在 clang 中交叉编译相对简单(clang -target mips-linux-gnu“正常工作”)。唯一的问题是qemu-mips -g …

mips lldb

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

标签 统计

mips ×10

assembly ×6

alignment ×1

cpu-registers ×1

ide ×1

lldb ×1

memory ×1

nios ×1