9

Recently digitized and turned into a repo, the original Apollo 11 guidance computer source code has been made available for viewing on Github.

In MAIN.agc, the repo author comments that they

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

A bit later, the author states

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.

I know what linkers are and I understand the point of them- but I've never heard of the phrase (as far as ASM goes) "joined by means of inclusion".

What does this mean? Considering that linkers are a big deal in programming, I'm curious what this substitution of linkers by "means of inclusion' is and how it works.

8protons
  • 1,379

2 Answers2

18

They seem to mean simple textual concatenation / insertion. In other words, even though the source text was split into individual files, the program wasn't split into modules.

Jörg W Mittag
  • 104,619
-2

How does simple inclusion compare with linking?

So simple inclusion is accomplished by using #include "someCFile.c".

By default linkers will add a runtime library. With inclusion, this would have to be included.

I suspect that inclusion would take less space as the objects would not need to have tables containing entry points and potentially variables with names. In dynamic linking, the entry point table has to be there. I am not sure if static linking would remove it or not, thou I suspect that it doesn't.

In term of processing speed, inclusion is probably a bit faster (definitely in the case of dynamically linked libraries), however it is not as flexible, they is multiple applications could not share the same library.

Considering binary size, inclusion would be bigger.

Considering compile time, inclusion would take longer.

For the NASA navigation computer simple inclusion was ok as the navigation computer only ran one program.

Robert Baron
  • 1,132