osdev.labedz.org

Łączenie procedur napisanych w językach różnych poziomów

Implementacja systemu operacyjnego tylko w języku assemblera nie jest najlepszym rozwiązaniem. Jest to oczywiście zadanie wykonalne (istnieje nawet taki projekt), jednakże w tym przypadku całkowicie bezzasadne.

Język assemblera powinien być zastosowany wszędzie tam, gdzie konieczne jest bezpośrednie operowanie na sprzęcie, bądź w procedurach krytycznych, których wykonanie powinno być jak najbardziej efektywne.

Ponieważ zastosowane narzędzia programistyczne generują tego samego rodzaju pliki obiektowe, nie ma problemu, aby je połączyć za pomocą programu konsolidatora. Jednakże, ani kompilator GCC ani assembler NASM nie posiadają funkcji łączenia procedur napisanych w językach różnych poziomów, więc o takie połączenie musi zadbać programista.

Największym problemem, podczas wywoływaniu procedur w językach różnego poziomu, jest wzajemne przekazywanie argumentów. W naszym przypadku należy rozważyć przekazanie argumentów wejściowych do procedury, a następnie wyniku działania z procedury języka C do procedury napisanej w assemblerze i odwrotnie - z procedury w assemblerze do procedury języka wysokiego poziomu.