2009-06-20 21 views
7

Co dokładnie robi ta instrukcja? Wiem, że próbuje dopasować dane do wielokrotności określonego numeru, ale dlaczego miałbyś to zrobić? Czy istnieje odpowiednik instrukcji w innych asemblerach?Instrukcja "wyrównaj" na MIPS

Odpowiedz

9

Zazwyczaj wyrównujesz dane, aby uzyskać lepszą wydajność. W przypadku większości procesorów dostęp do pamięci ma pewne ograniczenia w przypadku braku dostępu do określonych granic bajtów. W przypadku innych asemblerów często występuje w tym celu pewnego rodzaju. Większość kompilatorów wyrównuje również struktury danych (choć można je wyłączyć w celu debugowania).

Zobacz także Wikipedia entry.

Należy pamiętać, że nieulotnione systemy MIPS mogą nawet ulec awarii, jeśli spróbujesz uzyskać dostęp do niewyrównanych komórek pamięci (patrz here i here).

+0

Dzięki za dodatkowe wyjaśnienia w linkach zewnętrznych! –

0

wyrówna wszystko do potęgi dwóch. To nie jest instrukcja, jej dyrektywy, które zostaną przetłumaczone na język instrukcji

Co do jego wykorzystania, do exampe:

instrukcje MIPS32 są zawsze 32 bity długości. Zatem każda instrukcja powinna zaczynać się od granicy słowa. Dodanie dyrektywy .align zanim rozpocznie się kod, wyrównuje rzeczy do 32 bitów. Ma to wiele zalet, w tym, że do pobierania instrukcji wymagany jest tylko 1 dostęp do pamięci i prawdopodobnie będzie to korzystne dla pamięci podręcznej instrukcji.

+0

Co powiesz na przechowywanie podwójnego spławika na stosie? Potrzebuje wyrównania 8 bajtów, prawda? –

+0

Tak, podwaja wyrównanie do 64 bitów – Tom