EMAS: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
Dodane 1931 bajtów ,  21 lut 2019
brak opisu 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]]).

Menu nawigacyjne