Atrybut rozmieszczenia
Atrybut rozmieszczenia zmiennej w pamięci – atrybut nadawany zmiennej w kodzie źródłowym, modyfikujący sposób rozmieszczenia przez translator danej zmiennej w pamięci operacyjnej. Atrybuty rozmieszczenia definiowane są w składni określonego języka programowania lub przez jego konkretną implementację.
Rodzaje atrybutów rozmieszczenia
[edytuj | edytuj kod]Atrybuty rozmieszczenia podzielić można na dwie zasadnicze grupy:
- Atrybuty wskazujące adres, konkretne miejsce w pamięci, w którym ma zostać umieszczona zmienna.
- Atrybuty modyfikujące lub definiujące sposób rozmieszczenie zmiennych w pamięci przez translator, wybranie jednak konkretnego adresu nadal pozostawia się translatorowi, a jedynie wskazuje się zasady rozmieszczania, które muszą zostać spełnione.
Atrybut adresu
[edytuj | edytuj kod]Atrybut rozmieszczenia wskazywać może konkretne miejsce w pamięci, w którym ma być umieszczona zmienna. Stosuje się:
Adres bezwzględny specyfikuje jawnie konkretne miejsce w pamięci – adres – od którego to miejsca ma się rozpoczynać obszar zajmowany przez daną. Natomiast adres względy specyfikuje odniesienie do innego, wcześniej zadeklarowanego elementu.
Przykład w Turbo Pascalu[1][2]:
var s : string;
len : byte absolute s; {adres względny}
a : integer absoute $0040:$0020 {adres bezwzględny}
Atrybut reguły
[edytuj | edytuj kod]Ten rodzaj specyfikuje jedynie zasady jakie ma przestrzegać translator rozmieszczając dane w pamięci. Sposób rozmieszczenia dotyczyć może np. wymagań jakie musi spełnić adres początku obszaru zmiennej. Ustalenie jednak konkretnego adresu pozostawia się translatorowi. Przykładem w PL/I są atrybuty ALIGNED | UNALIGNED
[3] albo też packed
w Pascalu.
Sposoby specyfikacji
[edytuj | edytuj kod]Atrybuty rozmieszczenia określa się w definicji zmiennej. Często jest to pewna opcjonalna fraza takiej definicji. Brak w takim przypadku jawnej specyfikacji pozostawia swobodę dla translatora w rozmieszczeniu zmiennych w pamięci według mechanizmu standardowego. Dopiero jawna specyfikacja tego atrybutu zmienia domyślny sposób działania translatora w tym zakresie.
Przykładowo w języku PL/I dla atrybutów ALIGNED | UNALIGNED
lub w skrócie UNAL
, przyjmuje się domyślnie[3]
- atrybut
UNALIGNED
dla danych łańcuchów bitowych i znakowych stałej długości - atrybut
ALIGNED
dla pozostałych danych.
Porównanie z innymi konstrukcjami
[edytuj | edytuj kod]Atrybuty adresu można porównać z innymi konstrukcjami występującymi w różnych językach programowania:
- rekord z wariantami, np.
RECORD
w języku Modula 2[4], - unia, np.
union
w języku C[5], - instrukcja, np.
EQUIVALENCE
w języku Fortran[6].
Wszystkie wyżej wymienione sposoby, podobnie jak atrybut adresu, mogą być stosowane do nakładania zmiennych, występuje więc analogia do atrybutu rozmieszczenia z wyspecyfikowanym adresem względnym.
Atrybuty rozmieszczenia w językach programowania
[edytuj | edytuj kod]język programowania | atrybut adresu | atrybut reguły |
---|---|---|
Ada[7] | use at adres | |
Pascal[8] | packed | |
PL/I[3] | <DEFINED | DEF> ... [<POSITION | POS> ...] | ALIGNED | <UNALIGNED | UNAL> |
PL/M[9] | AT(adres) | |
Turbo Pascal[1] | absolute adres | packed |
Zobacz też
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ a b Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., seria: Biblioteka Użytkownika Mikrokomputerów ISBN 83-85060-53-7, ISSN 0867-6011
- ↑ Liczby adresu bezwzględnego podane w systemie szesnastkowym
- ↑ a b c Jan Bielecki, Rozszerzony PL/I i JCL w systemie OS/RIAD, Państwowe Wydawnictwo Naukowe, Warszawa 1986, Seria: Biblioteka Informatyki, ISBN 83-01-06146-4
- ↑ Niklaus Wirth, Modula 2, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0828-8
- ↑ Brian W. Kernighan, Dennis M. Ritche, Język C, Wydawnictwa Naukowo-Techniczne, Warszawa 1988, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-1067-3
- ↑ Ryszard K. Kott , Krzysztof Walczak , Programowanie w języku Fortran 77, Warszawa: Wydawnictwa Naukowo-Techniczne, 1991, ISBN 83-204-1362-1, OCLC 749999902 .
- ↑ A. Nico Habermann, Dewayne E. Perry, Ada dla zaawansowanych, Wydawnictwa Naukowo-Techniczne, Warszawa 1989 r., seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-1058-4
- ↑ Michał Iglewski, Jan Madey, Stanisław Matwin, Pascal. Język wzorcowy – Pascal 360., Wydawnictwa Naukowo-Techniczne, Warszawa 1984, wydanie trzecie – zmienione, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0597-1
- ↑ Jan Bielecki, PL/M język programowania mikroprocesorów, Wydawnictwa Komunikacji i Łączności, Warszawa 1987, Seria: Elektronizacja, zeszyt 25