我对这段代码感兴趣,来自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的重要性感到困惑。
答案 0 :(得分:2)
电路板是一个二维数组,例如board[2][2]
被转换为board[2*9+2]
。行的代码等效于(t0/3)*27
,它将行号与其框的(第一个数字)对齐,然后有效地乘以9,正确地索引行。