Apollo-11: utilizzo di inclusione anziché di un linker

10

Recentemente digitalizzato e trasformato in un repository, il codice sorgente del computer di guida Apollo 11 originale è stato reso disponibile per visualizzazione su Github .

In MAIN.agc , l'autore del repository ne commenta

split the huge monolithic source code into smaller, more manageable chunks--i.e., into individual source # files.

Un po 'più tardi, lo stato dell'autore

It may be reasonably asked why tens of thousands of lines of source are joined by means of inclusion, rather than simply assembling the source files individually and then linking them to form the executable. The answer is that the original development team had no linker.

So quali sono i linker e ne capisco il significato - ma non ho mai sentito parlare della frase (per quanto riguarda l'ASM) "unita per mezzo di inclusione".

Che cosa significa? Considerando che i linker sono un grosso problema per la programmazione, sono curioso di sapere cosa sia questa sostituzione di linker con "mezzi di inclusione" e come funzioni.

    
posta 8protons 18.07.2016 - 17:27
fonte

2 risposte

18

Sembrano significare semplice concatenazione / inserimento testuale. In altre parole, anche se il testo sorgente è stato diviso in singoli file , il programma non è stato diviso in moduli .

    
risposta data 18.07.2016 - 17:43
fonte
-2

In che modo l'inclusione semplice si confronta con il collegamento?

Quindi l'inclusione semplice si ottiene usando #include "someCFile.c".

Per impostazione predefinita i linker aggiungeranno una libreria runtime. Con l'inclusione, questo dovrebbe essere incluso.

Sospetto che l'inclusione richiederebbe meno spazio poiché gli oggetti non avrebbero bisogno di avere tabelle contenenti punti di ingresso e potenzialmente variabili con nomi. Nel collegamento dinamico, la tabella dei punti di ingresso deve essere presente. Non sono sicuro che se il collegamento statico lo rimuovesse o meno, sospetto che non lo sia.

In termini di velocità di elaborazione, l'inclusione è probabilmente un po 'più veloce (sicuramente nel caso di librerie collegate dinamicamente), tuttavia non è così flessibile, è possibile che più applicazioni non possano condividere la stessa libreria.

Considerando le dimensioni binarie, l'inclusione sarebbe più grande.

Considerando il tempo di compilazione, l'inclusione richiederebbe più tempo.

Per il computer di navigazione della NASA, l'inclusione semplice era ok in quanto il computer di navigazione eseguiva solo un programma.

    
risposta data 20.07.2016 - 22:32
fonte

Leggi altre domande sui tag