Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 在MIPS asm中的数独解算器实现中,该值来自何处_Assembly_Mips_Sudoku - Fatal编程技术网

Assembly 在MIPS asm中的数独解算器实现中,该值来自何处

Assembly 在MIPS asm中的数独解算器实现中,该值来自何处,assembly,mips,sudoku,Assembly,Mips,Sudoku,我对这段代码感兴趣,从 我试图理解我们在这里做什么,但我对27这个数字的意义感到困惑 电路板是一个二维数组,因此,例如电路板[2][2]被转换为电路板[2*9+2]。行的代码相当于(t0/3)*27,它将行号与其框(第一个数字)对齐,然后有效地乘以9,从而正确地索引行 如果我们选中一个大小为3x2(2行,3列)的框,这会有什么不同。对于6x6电路板。@TalenKylon首先,假设它是一行一行地编号的,将其与方框的角对齐(有2个方框),然后相乘得到电路板大小(t0/2)*12,可以除以3。在大多

我对这段代码感兴趣,从


我试图理解我们在这里做什么,但我对27这个数字的意义感到困惑

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

如果我们选中一个大小为3x2(2行,3列)的框,这会有什么不同。对于6x6电路板。@TalenKylon首先,假设它是一行一行地编号的,将其与方框的角对齐(有2个方框),然后相乘得到电路板大小
(t0/2)*12
,可以除以3。在大多数机器上,这将比div更快。@PeterCordes以牺牲一些可读性为代价course@qwr:为了可读性,您应该能够将其包装到汇编程序宏中。此外,这就是asm中的注释。
# 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