lunes, 18 de noviembre de 2013

Cómo leer la entrada de matriz 2D en MIPS

Lectura arrays 2D con el lenguaje ensamblador MIPS puede ser un reto.

El lenguaje ensamblador MIPS utiliza líneas de código para instruir a las computadoras. Al igual que en lenguaje de máquina, una línea de código MIPS se traduce en una sola instrucción, indivisible por una unidad central de procesamiento. Sin embargo, el código máquina utiliza la notación hexadecimal y otras construcciones, que pueden ser difíciles de comprender a simple vista. El lenguaje ensamblador es mucho más accesible inmediatamente. Tanto el lenguaje máquina y ensamblador tienen sus pecadillos, sin embargo. En MIPS, matrices de datos son listas de valores contiguos. Adición de más dimensiones altera esto en sólo una manera de menor importancia. Crea una lista contigua de arrays 1D. La comprensión de esta idea es un paso vital para los valores de arrays 2D leer.



Identificar la ubicación del elemento deseado. Discernir el número de fila y columna. Por ejemplo, consideremos la matriz:

[3] [4] [3] [2] [1] [2] [5] [6] [5] [2] [9] [3] [1] [7] [9] [1] [2 ] [3] [4] [5] [5] [6] [5] [6] [5]

Esta matriz 2D es una serie de cinco filas y cinco columnas. Si el elemento deseado es el centro más valor en la matriz, se tiene coordenadas fila 3, columna 3.



Vuelva a escribir la matriz 2D como una matriz de 1D. Código ensamblador no reconoce retornos de carro en arrays 2D. En cambio, reúne los datos como una matriz de matrices 1D 1D, a partir de una dirección base y termina en [dirección base + filas * columnas]. Para continuar con el ejemplo, la matriz 2D se convierte en:

[3] [4] [3] [2] [1] [2] [5] [6] [5] [2] [9] [3] [1] [7] [9] [1] [2 ] [3] [4] [5] [5] [6] [5] [6] [5]

25 Los valores de esta matriz corresponden a las cinco filas y cinco columnas anteriores.



Reste uno del número de fila de interés. Multiplicar este número de fila modificada por el número total de columnas. Agregue el valor de la columna de interés. Se multiplica por el número de bytes asignados a cada elemento. En el ejemplo, cada fila tiene cinco columnas. La ubicación del número entero (4 bytes) en la fila 3, columna 3 es: [(2 * 5) + 3] * 4 = 52. En lenguaje ensamblador, esto está escrito: Dirección básica + (fila * NUM_COLUMNS) + col.



Escriba un comando con el valor nominal de carga inmediata o li, para leer este valor en una variable. Para concluir el ejemplo, establecer una variable (fini1) igual al elemento en la posición de byte calculado. En lenguaje ensamblador, esto aparece como: li fini1 (52).

 

No hay comentarios:

Publicar un comentario