(in a narrow sense)
turns a higher-level program into a native-binary program
A native-binary program is:
- a bunch of instructions (cleverly called the text segment)
- a bunch of space for global/static initialized data (named the data segment)
- a bunch of space for global/static uninitalized data (named the bss segment)
- a bunch of empty workspace for intermediate calculations (called the stack)
- a bunch of empty space to place stuff we don't know the size of before it's needed (called the heap)