MIPS中的if语句为双重条件

时间:2019-07-08 02:57:49

标签: c mips

我正在将以下C代码转换为MIPS,看来 Field field = Manager.class.getDeclaredField("opts"); field.setAccessible(true); Manager.Options options = (Manager.Options) field.get(socket.io()); options.query = getQuery(); 函数始终返回0。

C:full code here

isIdent

MIPS: isIdent code here Full code here

我尝试更改if语句的位置,例如首先检查int isIdent (int m[N][N], int n) { for (int row = 0; row < n; row++) for (int col = 0; col < n; col++) if (row == col && m[row][col] != 1) return 0; else if (row != col && m[row][col] != 0) return 0; return 1; } row,但这似乎没有什么不同。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

找到了solution!正如@CraigEstey所指出的,我要做的实际上是从计算出的地址中获取值。

# m[row][col] = *(&m[0][0] + (row * N) + col)
mul $t0, $s2, $s1   # % <- row * N
add $t0, $t0, $s3   #    + col
li  $t1, 4
mul $t0, $t0, $t1   #    * sizeof(word)
addu    $t0, $s0, $t0   #    + &m[0][0]
lw  $a0, ($t0)      # actually fetch m[r][c] from memory

非常感谢大家:)