这个值来自于MIPS asm中的Sudoku求解器实现

时间:2015-12-01 03:30:11

标签: assembly mips sudoku

我对这段代码感兴趣,来自https://github.com/delucas/sudoku-project/blob/master/sudoku-assembler-mips/sudokiller.s#L158

# 3x3-Box check
div     $t0, $a1, 3           # $t0 = row / 3
mul     $t0, $t0, 27          # Offset of the row  ->>> Where does the 27 come from?
div     $t1, $a2, 3           # $t1 = col / 3
mul     $t1, $t1, 3           # Offset of the column
add     $t1, $t0, $t1         # Offset of the first cell in the box

我试图了解我们在这里做了什么,但我对数字27的重要性感到困惑。

1 个答案:

答案 0 :(得分:2)

电路板是一个二维数组,例如board[2][2]被转换为board[2*9+2]。行的代码等效于(t0/3)*27,它将行号与其框的(第一个数字)对齐,然后有效地乘以9,正确地索引行。