меня интересует в этом блоке кода, из https://github.com/delucas/sudoku-project/blob/master/sudoku-assembler-mips/sudokiller.s#L158Где это значение пришел от этого в реализации решатель судоку в MIPS ассемблере
# 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.
Вы можете разделить на 3 [с умножением и сдвигом вправо] (http://stackoverflow.com/a/171369/224132). Это будет быстрее, чем 'div' на большинстве машин. –
@PeterCordes За счет некоторой удобочитаемости, конечно, – qwr
@qwr: вы должны иметь возможность обернуть его в макрос ассемблера для удобства чтения. Кроме того, это то, о чем комментируют в asm. –