Konsolidacja (linkowanie) programów
Dyrektywy związane z konsolidacją programów umożliwiają wzajemną komunikację oddzielnie asemblowanych modułów przez ich nazewnictwo i zezwolenie na używanie symboli zdefiniowanych wewnątrz innych modułów.
NAME
Dyrektywa NAME
określa nazwę, która będzie użyta dla oznaczenia modułu obiektowego wygenerowanego na podstawie bieżącego programu. Nazwa pliku obiektowego nie jest nazwą modułu obiektowego. Nazwa modułu obiektowego jest wbudowana w plik obiektowy. Dyrektywa NAME
ma następujący format:
NAME nazwa_modułu
- nazwa_modułu jest nazwą, która będzie użyta do oznaczenia modułu obiektowego. Jej długość nie może przekroczyć 40 znaków. Przy określaniu nazwy modułu należy przestrzegać zasad określonych dla nazw symbolicznych.
W danym pliku programu dyrektywa NAME
może być użyta tylko jeden raz. Jeśli omawiana dyrektywa nie zostanie w ogóle użyta, to nazwą modułu obiektowego będzie nazwa pliku źródłowego bez rozszerzenia.
Przykłady:
NAME MOJ_PROGRAM
PUBLIC
Dyrektywa PUBLIC
wylicza symbole, które są zdefiniowane w bieżącym module, a których użycie dopuszcza się w innych modułach. W efekcie umożliwia ona dostęp do danego modułu zewnętrznym modułom. Dyrektywa PUBLIC
ma następujący format:
PUBLIC symbol[,symbol, ...]
- symbol musi być symbolem, który został zdefiniowany w danym pliku źródłowym. Odniesienia w tył do nazw symboli są dopuszczalne. W dyrektywie
PUBLIC
mogą być specyfikowane wszystkie nazwy symboliczne, za wyjątkiem symboli rejestrów i segmentów. Przy wprowadzaniu kilku symboli należy rozdzielać je przecinkami.
Jeśli jakiś symbol publiczny ma być użyty w innym pliku źródłowym, to należy użyć w nim dyrektywy EXTRN
określającej, że wyspecyfikowany symbol jest zadeklarowany w innym module obiektowym.
Przykłady:
PUBLIC PUT_CLRF, PUT_STRING, PUT_EOS PUBLIC ASCII2BIN, BIN2ASCII
EXTRN
Dyrektywa EXTRN
wylicza symbole (związane z danym modułem źródłowym), które są w rzeczywistości zadeklarowane w innym module. Format omawianej dyrektywy jest następujący:
EXTRN klasa (symbol[,symbol, ...])
- klasa jest klasą pamięci (
BIT
,CODE
,DATA
,IDATA
,XDATA
), w której został zdefiniowany symbol. - symbol jest nazwą zewnętrznego symbolu.
Dyrektywa EXTRN
może występować w dowolnym miejscu programu źródłowego. Przy wprowadzaniu kilku symboli należy rozdzielić je przecinkami i umieścić w nawiasach za informacją o klasie.
Nazwy symboliczne, które są określane w dyrektywie EXTRN
, muszą być wcześniej określone jako symbole publiczne przy pomocy dyrektywy PUBLIC
w pliku źródłowym, w którym zostały one zadeklarowane.
Linker rozpoznaje wszystkie symbole zewnętrzne w czasie łączenia modułów i weryfikuje, czy klasa symbolu i typ symbolu, określone w dyrektywie EXTRN
i PUBLIC
, są zgodne.
Przykłady:
EXTRN PUT_CLRF, PUT_STRING, PUT_EOS EXTRN ASCII2BIN, BIN2ASCII