kann mir jemand erklären, warum MARS die Pseudobefehle in zwei Anweisungen übersetzen: lui & ori? Gibt es Fälle, in denen die Übersetzung nur eine Anweisung enthält?MIPS "la" Pseudobefehl
Antwort
Dieses einfache Programm
.data
msg: .asciiz "This is a string"
.text
la $a0, msg # pseudo-instruction to load the address of the label str
Verschiebt den Anweisungen
Address Code Basic Source
0x00400000 0x3c011001 lui $1,0x00001001 4 la $a0, msg # pseudo-instruction to load the address of the label str
0x00400004 0x34240000 ori $4,$1,0x00000000
Und es ist immer diese beiden AFAIK Anweisungen. Der Befehl lui bewirkt, dass der Sofortwert um 16 Bits nach links verschoben und im Register gespeichert wird. Die unteren 16 Bits sind Nullen.
Auf diese Weise können Sie 32-Bit-Adresse (in Mips32) mit 32-Bit-Anweisungen laden.
Wie Sie jede Art von Befehl wissen können ein „ähnlicher“ Struktur-Befehl ist so aufgebaut:
Die Größe, die für den Wert gespeichert wird, ist wirklich das Problem/Grund, dass sie es auf zwei gespaltet verschiedene Befehle.
Sie können in der Abbildung sehen, dass der größte Typ für Wert (I-Typ, der niedrigste) nur 26 Bit hat. Die Adresse hat einen 32-Bit-Wert, da Sie wissen, dass ein 32-Bit-Wert nicht in einen 26-Bit-Befehl passt. Und so gespaltet sie es in zwei Schritte:
- Erster Schritt: die Adresse an die oberen 16 Bit des Registers geladen wird einen R-Typ-Befehl (LUI) Last oberen unmittelbare welche die zweite Struktur in der Figur . Es kopiert einfach die oberen 16 Bit in die oberen 16 Bit des Registers.
- Zweiter Schritt: Kopieren Sie die unteren 16 Bits der Adresse mit einem Befehl oder. Es wird also nur den unteren Teil der Adresse in den unteren Teil des Registers "kopieren".
- 1. MIPS, Rekursion
- 2. MIPS int
- 3. Bestätigungsdialog in MIPS Montage
- 4. Syntaxfehler in MIPS-Assembly
- 5. Array zu Array MIPS
- 6. Assembly mips branch error
- 7. Pig Latin in MIPS Assembly
- 8. C zu MIPS-Übersetzung
- 9. SwitchDisplayable a la Android
- 10. MIPS: Klein auf Großbuchstaben
- 11. MIPS (SPIM): verschachtelte Unterroutinen debuggen
- 12. Assembly MIPS: Reverse-Druck zwei Strings
- 13. Drucken von Zeilenumbruch in MIPS
- 14. Einfache MIPS-Baugruppe
- 15. Entfernen von Leerzeichen aus Zeichenfolge in MIPS
- 16. MIPS - Fetch Adresse nicht auf Wortgrenze ausgerichtet
- 17. Syntaxfehler beim Drucken von Ergebnissen mit MIPS
- 18. Karussell-Komponente a-la searchme.com
- 19. Grau NSTableView à la iTunes
- 20. Assembly MIPS cant lw from array
- 21. MIPS Programm zum Multiplizieren von zwei Zahlen
- 22. Mips Needleman Rekursion
- 23. MIPS-Eingabe
- 24. MIPS Verzweigungsbefehle
- 25. C zu MIPS - Befehlsreferenzen undefined QTSpim
- 26. MIPS Unterschied zwischen zwei Ganzzahlen im Array
- 27. Mips Assembly Sprache isolierende Bits
- 28. Mips Multiplikation von zwei Zahlen Funktion
- 29. MIPS Assembly - Briefkasten und Druckausgabe konvertieren
- 30. vergleichen größer als in MIPS-Assembly