Atrybut rozmieszczenia

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania

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:

  1. Atrybuty wskazujące adres, konkretne miejsce w pamięci, w którym ma zostać umieszczona zmienna.
  2. 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:

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]

Przegląd atrybutów rozmieszczenia według języków programowania.
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]

  1. a b Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., seria: Biblioteka Użytkownika MikrokomputerówISBN 83-85060-53-7​, ISSN 0867-6011
  2. Liczby adresu bezwzględnego podane w systemie szesnastkowym
  3. 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
  4. Niklaus Wirth, Modula 2, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ​ISBN 83-204-0828-8
  5. Brian W. Kernighan, Dennis M. Ritche, Język C, Wydawnictwa Naukowo-Techniczne, Warszawa 1988, Seria: Biblioteka Inżynierii Oprogramowania, ​ISBN 83-204-1067-3
  6. Ryszard K. Kott, Krzysztof Walczak, Programowanie w języku Fortran 77, Warszawa: Wydawnictwa Naukowo-Techniczne, 1991, ISBN 83-204-1362-1, OCLC 749999902.
  7. 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
  8. 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
  9. Jan Bielecki, PL/M język programowania mikroprocesorów, Wydawnictwa Komunikacji i Łączności, Warszawa 1987, Seria: Elektronizacja, zeszyt 25