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