As per the compiler partition
(Lexical, Syntax, Semantics & intermediate code) is front end or Analysis Phase( where you fetch the information from the given code segment/Program and store into symbol table).
(Code Optimization and Target Code) is a back end or Synthesis Phase (where you use the information which stored in symbol table and took the decision to provide the target code for the independent machine.)
It depends upon the machine which type of Intermediate representation it wants(Quadruples, Triples and indirect triples), then optimization procedure took place where various things matters( This code optimization phase attempts to improve the ... Code Optimization is done in the following different ways : ... Strength reduction means replacing the high strength operator by the low strength., etc......).
At last target code generated which is also specific suppose there is machine who only have Instruction set (AD, MUL, DIV ) and other machine have only (ADD, JUMP, MUL) here backend plays the role.