Niedawno zdigitalizowany i przekształcony w repozytorium udostępniono oryginalny kod źródłowy komputerowego przewodnika Apollo 11 do przeglądania na Github .
W MAIN.agc autor repozytorium komentuje, że tak
podzielić olbrzymi monolityczny kod źródłowy na mniejsze, łatwiejsze do zarządzania fragmenty - tj. na poszczególne pliki źródłowe #.
Nieco później autor stwierdza
Można zasadnie zapytać, dlaczego dziesiątki tysięcy wierszy źródła są łączone poprzez włączenie, zamiast po prostu pojedynczego złożenia plików źródłowych, a następnie połączenia ich w celu utworzenia pliku wykonywalnego. Odpowiedź jest taka, że pierwotny zespół programistów nie miał linkera.
Wiem, czym są linkery i rozumiem ich sens - ale nigdy nie słyszałem o frazie (o ile chodzi o ASM) „połączone przez włączenie”.
Co to znaczy? Biorąc pod uwagę, że linkery to wielka sprawa w programowaniu, jestem ciekawy, czym jest to substytucja linkerów przez „sposób włączenia” i jak to działa.
#include
dyrektywa wC
. Innymi słowy, zamiast kodu skompilowanego na komponentach, które następnie są ze sobą połączone, wygląda na to, że$
notacja zawiera zawartość tego pliku, w celu wygenerowania jednego dużego pliku źródłowego. Ten jeden duży plik źródłowy jest następnie kompilowany jako pojedynczy obiekt.