mips - MIPS 试图换成单词
问题描述
我正在尝试交换数据中的变量,以便在 QTSimp 中运行时 5、7 变为 s 7,5。但是我无法在 QtSpim 中运行代码。我认为问题在于我只是在更改指针而不是实际更改数据的值。我将如何解决这个问题?
.text
main:
la $a0,n1
la $a1,n2
jal swap
li $v0,1 # print n1 and n2; should be 7 and 5
lw $a0,n1
syscall
li $v0,11
li $a0,' '
syscall
li $v0,1
lw $a0,n2
syscall
li $v0,11
li $a0,'\n'
syscall
li $v0,10 # exit
syscall
swap:
xor $a0 $a0 $a1
xor $a1 $a0 $a1
xor $a0 $a0 $a1
jr $ra
L1:
.data
n1: .word 5
n2: .word 7
解决方案
内存访问需要加载和存储,在我们称为解引用的操作中,它在汇编中使用寻址模式。
这个想法是将内存数据复制到 cpu 寄存器中,以便您可以操作这些副本。由于您希望效果回到内存中,因此您还需要使用存储。
所以,加载两者,然后存储两者,交换它们来自哪里和去哪里。
推荐阅读
- opencart - 在 opnecart 中导出产品时获取完整的图像 URL
- python-xarray - 使用多个可能值按月拟合 xarray.DataArray
- video-indexer - 是否可以获得包含分析的视频的所有视频 ID 的列表?
- javascript - 为什么没有使用插入符号版本控制在 CI 中安装最新的可能版本
- python - 多列的分组
- android - 如何为 gps 使用特定对话框?
- node.js - TypeError: Reflect.getMetadata is not a function 使用 Node.JS 路由控制器时
- r - 将 R 数据框转换为自定义 json
- php - 具有相同EntityType 和不同choice_value 的多个表单
- java - APPScan CLIENT 在具有 appscan.sh 版本的 docker 容器中失败