Konwencja wołania – to zestaw reguł rządzących zachowaniem programów, w tym użyciem przez nie rejestrów i innych zasobów procesora, użyciem stosu systemowego, sposobem przekazywania argumentów do procedur, wywoływania procedur, alokacji zmiennych lokalnych, przekazywania wartości i powrotów z procedur.
Konwencja wołania może być zdefiniowana na różnych poziomach – zależy to od stopnia kontroli podmiotu definiującego konwencję wołania nad obszarem zastosowań tej konwencji.
W komputerach zbudowanych na bazie procesorów MIPS obowiązuje jedna konwencja wołania, zdefiniowana przez projektantów procesora i opisana w dokumentacji procesora. Jest ona stosowana w e wszystkich środowiskach – wszystkich systemach operacyjnych, językach programowania i kompilatorach.
W implementacjach systemów rodziny Unix dla procesorów innych niż MIPS przyjęto, że system operacyjny narzuca konwencję wołania, z której korzysta całe oprogramowania działające w systemie operacyjnym. Konwencja jest wspólna dla wszystkich systemów rodziny Unix/Linux, co daje w efekcie pełną przenośność oprogramowania pomiędzy tymi systemami operacyjnymi. Konwencje te są opisane w dokumentach Unix System V Applicatiion Binary Interface dla poszczególnych rodzin procesorów.
Jeśli konwencja wołania nie została zdefiniowana na poziomie systemu operacyjnego, definiuje ją twórca kompilatora. Jest to sytuacja niekorzystna, gdyż każdy dostawca kompilatora może zdefiniować konwencję wołania odmiennie, co powoduje niemożność łączenia modułów pisanych w tym samym języku programowania i kompilowanych przez różne kompilatory. Sytuacja taka miała miejsce w systemie operacyjnym DOS i częściowo we wczesnych systemach rodziny Windows.
Należy zauważyć, że istnieją środowiska, w których różne języki programowania używają różnych konwencji wołania, chociaż sytuacje takie należą już raczej do przeszłości.
|