2016-04-07 15 views
1

Angenommen, ich eine Variable, die ein Wort, wenn ichWenn in MIPS32 die Ladeadresse aufgerufen wird, erhält das Register alle 4 Adressen der Variablen?

la $t0, var 

Würde das Register jetzt speichert 4 verschiedene Adressen oder nur eine nennen bin?

Ich bin in dieser Hinsicht verloren, da alle Programmierhilfen zeigen, dass Wörter in 4 verschiedenen 8-Byte-Speicherorten gespeichert werden, doch beim Aufruf der Ladeadresse scheinen alle Hilfslinien nur eine einzige Adresse zu referenzieren. Wenn es nur eine Adresse ist, wie wird darauf verwiesen?

+0

Primitive Werte und einfache Datenstrukturen werden normalerweise in zusammenhängende Byte-Bereiche platziert. Es genügt, die Adresse des ersten zugewiesenen Bytes zu kennen, die restlichen Adressen werden durch einfache Arithmetik abgeleitet. – ach

Antwort

1

$t0 wird die Adresse des ersten Byte von var, enthalten, da ein Byte die kleinste adressierbare Einheit des Speichers ist auf den meisten CPUs. Ob Sie diese Adresse als die Adresse eines Bytes (lb/lbu/sb) behandeln möchten, ein Halbwort (lh/lhu/sh) oder ein Wort (lw/sw) ist bis zu Ihnen.

(Beachten Sie, ob das erste Byte das höchstwertige oder das niedrigstwertige Byte des Wortes ist, hängt von der Byte-Reihenfolge ab, die vom jeweiligen CPU-Modell verwendet wird).