Hvordan Les Innspill fra 2D Array i MIPS

Hvordan Les Innspill fra 2D Array i MIPS


Den MIPS assembly bruker linjer med kode for å instruere datamaskiner. På samme måte som maskinspråk, en linje av MIPS kode oversettes til en enkelt, udelelig instruksjon for en sentral behandlingsenhet. Men bruker maskinkode heksadesimal notasjon og andre konstruksjoner, som kan være vanskelig å forstå på et øyeblikk. Montering språk er langt mer umiddelbart tilgjengelig. Både maskinspråk og montering språk har sine peccadilloes, imidlertid. I MIPS, data arrays er sammenhengende verdilister. Legge ytterligere dimensjoner endrer dette i bare en mindre vei. Det skaper en sammenhengende liste over 1D arrays. Forstå denne ideen er et viktig steg for å lese verdier fra 2D arrays.

Bruksanvisning

1 Identifisere plasseringen av det ønskede element. Skjelne rad og kolonnenummer. For eksempel vurdere rekken:

[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]

Dette 2D matrise er en serie på fem rader og fem kolonner. Hvis det ønskede elementet er sentrum-mest verdi i matrisen, har den koordinerer rad 3, kolonne 3.

2 Skriv om 2D matrise som et 1D array. Assemblerkode gjenkjenner ikke linjeskift i 2D arrays. I stedet samler det data som 1D rekke 1D arrays, starter på en base adresse og slutter på [basisadresse + rader * kolonner]. For å fortsette eksempelet, blir 2D matrise:

[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]

De 25 Verdiene i denne matrise svarer til de ovennevnte fem rader og fem kolonner.

3 Trekk en fra radnummer av interesse. Multiplisere denne modifiserte rad nummer med det totale antall kolonner. Legg verdien for kolonnen av interesse. Multipliser det med antall bytes allokert til hvert element. I eksemplet har hver rad fem kolonner. Plasseringen av heltall (4 byte) i rad 3, kolonne 3 er: [(2

5) + 3] 4 = 52. I assembly, dette er skrevet: basisadresse + (rad * ant_kolonner) + col.

4 Skriv en kommando ved hjelp av laste umiddelbar verdi kommando, eller li, for å lese denne verdien i en variabel. For å konkludere eksempel sette en variabel (fini1) lik elementet i den beregnede byte posisjon. I assembly, vises dette som: li fini1 (52).