The information about the runtime, name storage location is kept in the symbol table. If the compiler is going to be generating assembly code, then the assembler takes care of the storage locations of the various names . After generating the assembly code, the compiler scans the symbol table and generates the assembly language data definitions. These are appended to the assembly language code for each name. But if machine code is being generated, then the compiler must ascertain the position of each data object relative to a fixed origin.