Answer from cs61c-ao (Roger Tseng 16507336) for Question 1 the C preprocessor goes through the program being compiled and replaces all the macros in the code with the proper values. the language input is C and the output is still C. if it were a separate step it would be placed before the assembler module. because it'd have to replace all the macros before the assembler can understand it.