intermediate code generation