Intermediate Representation is a representation of a program part way between the source and target languages. This are usually categorized according to where they fall between a high-level language and machine code. It is close to a high-level language are called high-level IRs, and also close to assembly are called low-level IRs. It also Intermediate provides advantages in increased abstraction, cleaner separation between the front and back ends, and adds possibilities for retargeting /cross-compilation.