3012
edycji
Nie podano opisu zmian |
|||
Linia 346: | Linia 346: | ||
Dyrektywa ma efekt wyłącznie w przypadku generowania pliku wynikowego jako obiektu EMELF. Wskazuje, że etykieta będzie miała zasięg globalny. | Dyrektywa ma efekt wyłącznie w przypadku generowania pliku wynikowego jako obiektu EMELF. Wskazuje, że etykieta będzie miała zasięg globalny. | ||
=== .ifdef, .ifndef === | |||
Dyrektywa pozwala na asemblację warunkową podejmowaną istnieniem (bądź nie) zdefiniowanego symbolu. | |||
.ifdef SYMBOL | |||
... kod asemblowany, jeśl SYMBOL jest zdefiniowany ... | |||
.else | |||
... kod asemblowany, jeśli SYMBOL nie jest zdefiniowany ... | |||
.endif | |||
.ifndef SYMBOL | |||
... kod asemblowany, jeśli SYMBOL nie jest zdefiniwoany | |||
.endif | |||
Symbol określający warunek może być zarówno etykietą, stałą lub zmienną zdefiniowaną w pliku źródłowym, jak również stałą zdefiniowaną podczas wywołania emas-a z opcją '-D' | |||
=== .struct === | |||
Dyrektywa ta pozwala na stworzenie opisu struktury danych w celu uczynienia kodu źródłowego bardziej czytelnym. Nie formalizuje ona struktury, a jedynie ułatwia pracę z danymi. Przykład opisu struktury 'struktura': | |||
.struct struktura: | |||
adres .res 1 | |||
dluga_liczba .res 2 | |||
tekst .res 64 | |||
.endstruct | |||
Kolejne pozycje nazywają kolejne pola struktury i określają ich długość w słowach. Po asemblacji symbolom o tych nazwach przypisany zostanie offset w strukturze, a nazwie struktury - jej długość. | |||
Użycie struktury w programie może wyglądać następująco: | |||
moja_str: .res struktura | |||
lw r3, moja_str | |||
ld r2 + dluga_liczba | |||
Definicja struktury z powyższego przykładu równoważna jest de facto następującemu ciągowi dyrektyw: | |||
.const adres 0 ; offset pola 'adres' | |||
.const dluga_liczba 1 ; offset pola 'dluga_liczba' | |||
.const tekst 3 ; offset pola 'tekst' | |||
.const struktura 67 ; rozmiar struktury 'struktura' | |||
W strukturach można również zawęzić zakres nazewnictwa pól: | |||
.struct struktura: | |||
.adres .res 1 | |||
.dluga_liczba .res 2 | |||
.tekst .res 64 | |||
.endstruct | |||
Wtedy nazwy pól będą dostępne wyłącznie w kontekście danej struktury, a jej użycie wyglądać będzie następująco: | |||
moja_str: .res struktura | |||
lw r3, moja_str | |||
ld r2 + struktura.dluga_liczba | |||
== Rozkazy == | == Rozkazy == | ||
Patrz: [[Lista rozkazów]]). |