2016-06-22 21 views
2

Meine Frage ist: Was ist die Größe der Integer-Konstanten in MIPS?MIPS: Wie groß sind Integer-Konstanten in MIPS?

Here Ich habe gefunden, wie sie verwendet werden.

Wenn ich so eine Konstante in meinem Datensegment definiert haben, und ich möchte die Größe des Datensegments zu berechnen, welche Größe nehme ich für diese Konstante: Größe des Wortes, Byte, die Hälfte, .. ?

Hier ist ein Datensegment Beispiel:

.data 
array: .word 1, 2, 3 
LEN = 2    ; Here's the constant 

Die Größe des Datensegments ist: 3 * 32 (Bit) + (Bit)

Vielen Dank im Voraus!

Antwort

1

Ich nehme an, Sie rufen Konstanten bis "gleich".

Konstanten belegen keinen Platz im Datensegment. Wenn sie als Operand verwendet werden, werden sie durch ihren Ausdruck ersetzt und die Größe sollte mit der des Operanden übereinstimmen. In Ihrem Beispiel würde das Datensegment 4 * 3 Bytes verwenden = 12 Bytes (96 Bits).

Zum Beispiel, wenn Sie schreiben in MARS Simulator

.data 
array: .word 1,2,3 
.eqv LEN 2 
.eqv LARGE_VALUE 20000 
buffer: .space LARGE_VALUE 

dann können Sie Bezeichner verwenden LEN als Ersatz für 2, z.B.

li $a1, LEN 
li $a2, LARGE_VALUE 

In diesem Fall wird ein 16-Bit LEN sofort, wenn die erste Anweisung der Montage und die Assembler-Code aussendet eine 32-Bit-Last für die zweite Pseudo-Instruktion zu tun. Der im Datensegment definierte Puffer ist 20000 Byte (wie von eqv LARGE_VALUE definiert)

+0

Vielen Dank für Ihre klare Erklärung. –