EMAS: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
Usunięte 822 bajty ,  17 lut 2014
brak opisu edycji
Nie podano opisu zmian
Nie podano opisu zmian
Linia 91: Linia 91:


Symbolem jest ciąg znaków zaczynający się od małej lub dużej litery, z następującą dowolną ilością małych lub dużych liter, liczb lub znaku podkreślenia.
Symbolem jest ciąg znaków zaczynający się od małej lub dużej litery, z następującą dowolną ilością małych lub dużych liter, liczb lub znaku podkreślenia.
Symbolowi przypisywana jest wartość liczbowa oraz atrybuty. Symbol może być:
Symbolowi przypisywana jest w trakcie asemblacji wartość oraz atrybuty. Symbol może być:


* niezdefiniowany - wystąpiła deklaracja symbolu, ale nie został on (jeszcze) zdefiniowany,
* niezdefiniowany - wystąpiła deklaracja symbolu, ale nie został on (jeszcze) zdefiniowany,
* względny lub bezwzględny - wartością symbolu jest adres, który może zmienić się w procesie konsolidacji, bądź niezmienna wartość liczbowa,
* lokalny lub globalny - widoczny tylko w granicach obiektu, w którym występuje, bądź również poza nim,
* lokalny lub globalny - widoczny tylko w granicach obiektu, w którym występuje, bądź również poza nim,
* zmienny lub stały - wartość symbolu może, bądź nie może ulec zmianie w trakcie asemblacji programu.
* zmienny lub stały - wartość symbolu może, bądź nie może ulec zmianie w trakcie asemblacji programu.
Linia 102: Linia 101:
=== Zmienne assemblera ===
=== Zmienne assemblera ===


Zmienne assemblera nie mają swojej reprezentacji w wynikowym obiekcie, są wartościami dostępnymi w trakcie asemblacji programu, a definiuje się je dyrektywą '''.equ'''. Symbol, który jest zmienną assemblera jest zawsze bezwzględny i zmienny. Przykłady zmiennych:
Zmienne assemblera nie mają swojej reprezentacji w wynikowym obiekcie, są wartościami dostępnymi w trakcie asemblacji programu, a definiuje się je dyrektywą '''.equ'''. Symbol, który jest zmienną assemblera jest zawsze zmienny. Przykłady zmiennych:


  .equ a 10
  .equ a 10
Linia 109: Linia 108:
=== Stałe assemblera ===
=== Stałe assemblera ===


Stałe assemblera również nie mają swojej reprezentacji w wynikowym obiekcie, są wartościami dostępnymi w trakcie asemblacji programu, a definiuje się je dyrektywą '''.const'''. Symbol, który jest zmienną assemblera jest zawsze bezwzględny i stały. Przykłady stałych:
Stałe assemblera również nie mają swojej reprezentacji w wynikowym obiekcie, są wartościami dostępnymi w trakcie asemblacji programu, a definiuje się je dyrektywą '''.const'''. Symbol, który jest zmienną assemblera jest zawsze stały. Przykłady stałych:


  .const a 10
  .const a 10
Linia 116: Linia 115:
=== Etykiety ===
=== Etykiety ===


Etykieta jest zawsze stałym symbolem względnym i zawiera pozycję względem początku obiektu, czyli wartość licznika rozkazów w danym momencie asemblacji. Przykład definicji etykiety:
Etykieta opisuje pozycję względem początku obiektu (jest nią wartość licznika rozkazów w danym momencie asemblacji). Przykład definicji etykiety:


  etykieta:
  etykieta:
Linia 122: Linia 121:
=== Zasięg symboli ===
=== Zasięg symboli ===


Wszystkie symbole definiowane są jako lokalne. Jeśli symbol ma być widoczny dla konsolidatora, należy go zadeklarować jako globalny dyrektywą '''.global'''. Globalne mogą być wyłącznie symbole względne (etykiety), a zmiana zasięgu może nastąpić przed, lub po definicji:
Wszystkie symbole definiowane są jako lokalne. Jeśli symbol ma być widoczny dla konsolidatora, należy go zadeklarować jako globalny dyrektywą '''.global'''. Zmiana zasięgu może nastąpić przed, lub po definicji:


  .global printf
  .global printf
Linia 136: Linia 135:
  procedura:
  procedura:
  .global procedura
  .global procedura
=== Punkt wejścia ===
Symbolem o specjalnym znaczeniu jest punkt wejścia, deklarowany dyrektywą '''.entry'''. Jego wartością jest adres, od którego program zostanie uruchomiony (ma to znaczenie tylko gdy obiektem wyjściowym jest emelf). Z tego powodu, podobnie jak w przypadku symboli globalnych, punktem wejścia może być tylko symbol względny. W przypadku źródła, które zawiera kod przeznaczony do umieszczenia w bloku pamięci systemu operacyjnego (dyrektywa '''.os'''), punkt wejścia ustawiany jest automatycznie na wartość 0.


== Wyrażenia ==
== Wyrażenia ==

Menu nawigacyjne