What are the functions of the assembler and linker?
Basically, the assembler converts symbolic addresses into concrete addresses, and translates assembly instructions into machine instructions (essentially, bytes). But these “concrete” addresses are still not fully resolved because it may depend on where the instructions and data are physically loaded in the machine. The linker provides such information. The linker is also used to “link” together several modules into one big program (this is the reason for the linker’s name!).