assembly - 这两种 MIPS 操作有什么区别?
问题描述
我有两个低级代码块,我知道第二个是真的。但是为什么第一个是错误的?对我来说,这两个似乎工作方式相同。我不关心 == 8 部分。
if(A[i] == 8) { }
// A stored in $s0
// i stored in $s1
First :
sll $s1, $s1, 2 // i = i * 4
lw $t0, $s0, $s1 // we have A[i] in $t0
Second :
sll $s1, $s1, 2 // i = i * 4
add $s0, $s0, $s1 // we have the address of A[i]
lw $t0, 0($s0) or lw $t0, $s0, 0 // we have A[i] in $t0
解决方案
推荐阅读
- vuejs2 - 在 vue 应用中使 metisMenu 正常工作
- python - 如何打印图案
- aws-sdk - 如何有效地跟踪 AWS API 网关中的请求
- python - 为什么我的代码在行 cost_of_green =cost_of_green + X*G 中显示语法错误
- java - 我们如何计算超出java中double数据类型范围的值?
- java - Unchecked Call to Data error, when adding data points to Series
- reactjs - 需要使用无组件的 Material UI
- c - 我无法执行在 else if 语句中包含用户输入整数的程序
- python - 在 python 开发期间无法在可视化代码中获得实时错误
- spring-boot - 无法将“java.lang.String”类型的值转换为所需的“int”类型;