2016-08-08 46 views
2

In MIPS habe ich ein Array mit .byte erstellt, das mit Werten initialisiert wird.Zugriff auf Bytes im Array MIPS

array: .byte 1,2,3,4,5,6,7,8,9 

werden diese Werte im Speicher als 8-Bit-Integer gespeichert, zum Beispiel:

0x04030201 

Wie kann ich die einzelnen Werte zugreifen, um die ganzen Zahlen zu fassen? Ist die Verwendung einer Bitmaske der einzige Weg? Gibt es einen einfacheren Weg?

Antwort

4

Sie könnten den Opcode lb $t, offset($s) verwenden. Es funktioniert genauso wie lw $t, offset($s), aber es lädt ein Byte anstelle eines 4-Byte-Wortes in $ t.

Nehmen wir an, Sie möchten das 6. Byte des Arrays laden. Sie tun würden:

la $t0, array # load the array address 
lb $t1, 5($t0) # get 6th byte through an offset 

# then do whatever you want with it here 

EDIT: Sie haben auch lh für 2-Byte-Halbworte. Auch hier ist die MIPS-Befehlsreferenz, die ich verwendet habe, um Ihre Frage zu beantworten: http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

+0

Ich benutzte lb und es funktionierte, danke für die hilfreiche Antwort –