Die MIPS Assembler verwendet Codezeilen zu Computern anweisen . Ähnlich Maschinensprache übersetzt eine Zeile der MIPS -Code in eine untrennbare Befehl für eine zentrale Verarbeitungseinheit . Allerdings verwendet Maschinencode Hexadezimalnotation und andere Konstrukte , die nur schwer auf einen Blick verstehen können . Assembler ist weit mehr unmittelbar zugänglich . Sowohl Maschinensprache und Assembler haben ihre kleinen Sünden , aber. In MIPS , sind Datenfelder zusammenhängenden Listen von Werten. Hinzufügen weitere Dimensionen ändert dies nur zu einem geringen Teil . Es schafft eine zusammenhängende Liste von 1D-Arrays . Begreifen diese Idee ist ein wichtiger Schritt, um das Lesen von Werten aus 2D- Arrays. Anleitung
1
Identifizieren Sie die Lage des gewünschten Elements . Erkenne die Zeile und Spalte . Betrachten wir zum Beispiel 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 Reihe fünf Zeilen und fünf Spalten . Wenn das gewünschte Element ist das Zentrum am weitesten Wert im Array , hat es Koordinaten Zeile 3, Spalte 3 .
2
Schreiben Sie die 2D-Array als 1D-Array . Assembly Code nicht erkennen Zeilenumbrüche in 2D -Arrays. Stattdessen baut es die Daten als 1D-Array aus 1D-Arrays , beginnend bei einem Basis-Adresse und endend bei [ Basisadresse + Zeilen * Spalten ] . Um das Beispiel fortzusetzen , wird die 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 zu den oben genannten fünf Zeilen und fünf Spalten entsprechen .
3
Subtrahieren einer aus der Reihe Reihe von Interesse. Multiplizieren Sie diese geänderte Zeile Zahl durch die Gesamtzahl der Spalten . Fügen Sie den Wert für die Spalte von Interesse. Multiplizieren mit der Anzahl von Bytes für die einzelnen Elemente . In dem Beispiel weist jede Reihe fünf Spalten . Die Lage der Ganzzahl (4 Byte) in Zeile 3, Spalte 3 : [(2 * 5) + 3] * 4 = 52 . In Assembler wird dies geschrieben : . Basisadresse + (Zeile * NUM_COLUMNS ) + col
4
schreiben einen Befehl mit der Last unmittelbaren Wert Befehl oder li , um diesen Wert in eine Variable zu lesen. Um das Beispiel abzuschließen , eine Variable ( fini1 ) gleich dem Element in der Byte-Position berechnet . In Assembler , erscheint dies als : . Fini1 li (52)