Aus 2D-Array in MIPS wie Lese ich Input

September 9

Aus 2D-Array in MIPS wie Lese ich Input

Der MIPS-Assemblersprache verwendet Zeilen Code Computer anweisen. Ähnlich wie Maschinensprache übersetzt eine MIPS-Codezeile in ein einziges, unteilbares Anleitung für eine Zentraleinheit. Maschinencode verwendet jedoch Hexadezimalnotation und anderen Konstrukten, die schwer auf einen Blick verständlich sein kann. Assemblersprache ist weit mehr sofort zugänglich. Maschinensprache und Assembler haben jedoch ihre kleinen. Daten sind in MIPS zusammenhängenden Wertelisten. Hinzufügen von weiteren Dimensionen ändert dies auf nur eine kleinere Art. Es schafft eine zusammenhängende Liste von 1D-Arrays. Diese Idee begreifen, ist ein entscheidender Schritt zum Lesen von Werten aus 2D-Arrays.

Anweisungen

1 Identifizieren des gewünschten Elements. Die Anzahl der Zeilen und Spalten zu erkennen. Betrachten Sie beispielsweise das Array:

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

Diese 2D Array ist eine Serie von fünf Zeilen und fünf Spalten. Wenn das gewünschte Element der Mitte-die meisten Wert im Array ist, hat es Koordinaten Zeile 3, Spalte 3.

2 Schreiben Sie das 2D Array als Array 1D. Assembler-Code erkennt keine Wagenrücklaufzeichen in 2D-Arrays. Stattdessen baut es die Daten als Array 1D 1D Arrays, auf eine Basisadresse beginnt und endet beim [Basis-Adresse + Zeilen * Spalten]. Um das Beispiel fortzusetzen, wird das 2D Array:

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

Die 25 Werte in diesem Array entsprechen den oben genannten fünf Zeilen und fünf Spalten.

3 Subtrahieren von der Zeilennummer von Interesse. Multiplizieren Sie diese Zahl der geänderten Zeile durch die Gesamtanzahl der Spalten. Fügen Sie den Wert für die Spalte von Interesse. Die Anzahl der Bytes reserviert auf jedes Element multiplizieren. Im Beispiel hat jede Zeile fünf Spalten. Die Lage der Vorzeichen (4 Bytes) in Zeile 3, Spalte 3 ist: [(2 5) + 3]4 = 52. In Assemblersprache, ist dies geschrieben: Basisadresse + (Zeile * Num_columns) + Col.

4 Schreiben Sie einen Befehl mit der Belastung unmittelbaren Wert Befehl oder li, diesen Wert in eine Variable zu lesen. Abschließend das Beispiel stellt eine Variable (fini1) gleich dem Element in die berechnete Byteposition. In Assemblersprache, erscheint als: li fini1 (52).