Den MIPS assembler bruger linjer kode til at instruere computere. Svarende til maskinens sprog , én linje MIPS -koden udmønter sig i en enkelt, udelelig instruktion for en central processing unit. Men maskinens kode bruger hexadecimal notation og andre konstruktioner , som kan være svære at forstå på et øjeblik. Assembler er langt mere umiddelbart tilgængelige . Både maskine sprog og assembler har deres peccadilloes , dog. I MIPS er dataarrays sammenhængende lister over værdier. Tilføjelse yderligere dimensioner ændrer dette på kun en mindre vej . Det skaber en sammenhængende liste over 1D arrays. Forståelsen denne idé er et afgørende skridt til at læse værdier fra 2D arrays. Instruktioner
1
identificere placeringen af den ønskede element . Skelne række og kolonne nummer. For eksempel overveje array : Hej
[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]
Denne 2D array er en serie af fem rækker og fem kolonner . Hvis den ønskede element er centrum- mest værdi i array, det har koordinaterne række 3, kolonne 3 .
2
Rewrite 2D array som en 1D array. Assembly kode genkender ikke vognskift i 2D arrays. I stedet samler de data som en 1D vifte af 1D arrays , der starter på en base adresse og slutter ved [ basisadresse + rækker * kolonner ] . For at fortsætte eksemplet 2D matrix bliver : Hej
[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 værdier i dette array svarer til de ovennævnte fem rækker og fem kolonner.
3
Fratræk en fra rækkenummeret af interesse. Gang dette ændrede rækkenummer med det samlede antal kolonner . Tilføj værdien for kolonnen af interesse. Ganges med antallet af bytes der tildeles hvert element . I eksemplet har hver række fem kolonner . Placeringen af heltal ( 4 bytes) i række 3, kolonne 3 er : [ (2 * 5) + 3 ] * 4 = 52 . I assembler , dette skrives : . Basisadresse + ( række * NUM_COLUMNS ) + col
4
Skriv en kommando ved hjælp af belastningen umiddelbar værdi kommando eller li , at læse denne værdi i en variabel. Som afslutning på eksempel sætte en variabel ( fini1 ) svarende til element i den beregnede byte position. I assembler , synes dette som: . Li fini1 (52)