Intermediate Code Generation(MCQs)

What is the primary purpose of intermediate code generation in a compiler? a) To parse the source code b) To optimize the source code c) To provide a platform-independent representation of the source code d) To generate machine code Answer: c) To provide a platform-independent representation of the source code Which of the following is NOT a common form of intermediate code? a) Three-address code b) Syntax tree c) Control flow graph d) Assembly code Answer: d) Assembly code What is three-address code (TAC)? a) A type of machine code b) A type of intermediate representation with at most three operands c) A type of high-level language code d) A type of assembly code Answer: b) A type of intermediate representation with at most three operands Which intermediate code representation is known for using labels and jumps? a) Abstract Syntax Tree (AST) b) Three-address code (TAC) c) Control Flow Graph (CFG) d) Bytecode Answer: b) Three-address code (TAC) What is the benefit of using intermediate code in a compiler? a) It reduces the complexity of parsing b) It simplifies the code optimization process c) It directly generates executable code d) It eliminates the need for lexical analysis Answer: b) It simplifies the code optimization process In which stage of compilation is intermediate code generation performed? a) Lexical analysis b) Syntax analysis c) Semantic analysis d) Code generation Answer: d) Code generation What is the purpose of a control flow graph (CFG) in intermediate code generation? a) To represent the flow of control in a program b) To represent the syntax of the source code c) To generate machine-level code d) To parse the intermediate code Answer: a) To represent the flow of control in a program Which intermediate representation is often used in just-in-time (JIT) compilation? a) Three-address code b) Bytecode c) Abstract Syntax Tree d) Control Flow Graph Answer: b) Bytecode What does a “label” in intermediate code typically represent? a) A variable name b) An address for a jump or branch c) A type of operation d) A function name Answer: b) An address for a jump or branch Which form of intermediate code is particularly useful for performing optimizations like constant folding? a) Abstract Syntax Tree (AST) b) Three-address code (TAC) c) Bytecode d) Control Flow Graph (CFG) Answer: b) Three-address code (TAC) In intermediate code generation, what does “constant folding” refer to? a) Generating intermediate code for constant values b) Evaluating constant expressions at compile time c) Converting constants to variables d) Folding code sections into fewer instructions Answer: b) Evaluating constant expressions at compile time Which intermediate representation is more abstract and closer to high-level language constructs? a) Three-address code b) Bytecode c) Abstract Syntax Tree (AST) d) Control Flow Graph (CFG) Answer: c) Abstract Syntax Tree (AST) Which of the following is a common optimization applied during intermediate code generation? a) Loop unrolling b) Dead code elimination c) Register allocation d) All of the above Answer: d) All of the above What is the main goal of register allocation during intermediate code generation? a) To reduce the number of variables b) To minimize the number of registers used c) To optimize the use of available registers d) To generate additional intermediate code Answer: c) To optimize the use of available registers Which intermediate representation is usually more suitable for optimization tasks such as instruction scheduling? a) Abstract Syntax Tree (AST) b) Three-address code (TAC) c) Bytecode d) Control Flow Graph (CFG) Answer: b) Three-address code (TAC) What role does the Abstract Syntax Tree (AST) play in intermediate code generation? a) It represents the structure of the source code b) It performs code optimization c) It generates machine-level code d) It manages register allocation Answer: a) It represents the structure of the source code In intermediate code generation, what is “code motion” used for? a) Moving code to different parts of the program b) Optimizing code by moving operations out of loops c) Generating additional intermediate code d) Changing the order of code execution Answer: b) Optimizing code by moving operations out of loops Which of the following best describes “peephole optimization”? a) Optimizing the entire program at once b) Optimizing small sequences of intermediate code c) Generating new intermediate code d) Analyzing the syntax tree Answer: b) Optimizing small sequences of intermediate code Which intermediate representation is typically used in the compilation of Java programs? a) Bytecode b) Three-address code c) Abstract Syntax Tree (AST) d) Control Flow Graph (CFG) Answer: a) Bytecode What does “dead code elimination” refer to in intermediate code generation? a) Removing unnecessary intermediate code b) Optimizing the code for performance c) Generating additional code d) Converting code to machine language Answer: a) Removing unnecessary intermediate code Which of the following is NOT a common technique used in intermediate code generation? a) Constant propagation b) Instruction selection c) Syntax parsing d) Code scheduling Answer: c) Syntax parsing What is the purpose of “instruction selection” in intermediate code generation? a) Choosing the appropriate machine instructions from the intermediate code b) Generating intermediate code from high-level source code c) Performing loop optimizations d) Allocating registers Answer: a) Choosing the appropriate machine instructions from the intermediate code In which intermediate representation are “conditional branches” typically represented? a) Abstract Syntax Tree (AST) b) Three-address code (TAC) c) Bytecode d) Control Flow Graph (CFG) Answer: b) Three-address code (TAC) Which of the following is an advantage of using bytecode as an intermediate representation? a) It is platform-independent b) It directly maps to machine code c) It simplifies syntax analysis d) It eliminates the need for optimization Answer: a) It is platform-independent Which intermediate representation is often used to optimize loop operations? a) Control Flow Graph (CFG) b) Abstract Syntax Tree (AST) c) Bytecode d) Three-address code (TAC) Answer: a) Control Flow Graph (CFG) In which phase of compilation is “intermediate code generation” typically performed? a) Lexical analysis b) Syntax analysis c) Semantic analysis d) Code generation Answer: d) Code generation What is “code generation” in the context of intermediate code generation? a) Translating intermediate code to machine code b) Creating intermediate code from high-level source code c) Generating syntax trees d) Performing semantic analysis Answer: a) Translating intermediate code to machine code Which optimization technique involves reducing the number of instructions executed? a) Code scheduling b) Constant folding c) Dead code elimination d) Register allocation Answer: b) Constant folding Which form of intermediate code is typically more suitable for use in a Just-In-Time (JIT) compiler? a) Three-address code (TAC) b) Abstract Syntax Tree (AST) c) Bytecode d) Control Flow Graph (CFG) Answer: c) Bytecode What is the role of “type checking” in intermediate code generation? a) To ensure that operations are performed on compatible types b) To optimize the code for execution c) To generate machine code from intermediate code d) To parse the source code Answer: a) To ensure that operations are performed on compatible types What does “loop unrolling” aim to achieve in intermediate code optimization? a) Reducing the number of loop iterations b) Increasing the number of loop iterations c) Reducing the overhead of loop control d) Increasing the loop complexity Answer: c) Reducing the overhead of loop control Which intermediate representation is often used in the implementation of compilers for high-performance languages? a) Abstract Syntax Tree (AST) b) Bytecode c) Three-address code (TAC) d) Control Flow Graph (CFG) Answer: c) Three-address code (TAC) In the context of intermediate code, what is a “quadruple”? a) A four-address intermediate representation b) A type of bytecode instruction c) A four-part instruction format d) A type of control flow construct Answer: c) A four-part instruction format What is “register allocation” concerned with in intermediate code generation? a) Managing the use of CPU registers b) Allocating memory for variables c) Generating intermediate code d) Parsing syntax trees Answer: a) Managing the use of CPU registers Which of the following is NOT a benefit of intermediate code generation? a) Platform independence b) Simplified optimization c) Direct execution on hardware d) Easier error detection Answer: c) Direct execution on hardware What is the primary function of “code scheduling” in intermediate code generation? a) Reordering instructions to improve performance b) Generating intermediate code c) Allocating registers d) Performing syntax analysis Answer: a) Reordering instructions to improve performance In intermediate code, what does “semantic analysis” involve? a) Ensuring that the code adheres to semantic rules b) Generating machine code c) Parsing syntax trees d) Performing code optimization Answer: a) Ensuring that the code adheres to semantic rules Which of the following is a common method for performing “instruction selection”? a) Using a pattern-matching approach b) Generating machine code directly c) Performing syntax analysis d) Parsing the source code Answer: a) Using a pattern-matching approach Which form of intermediate code typically requires a “peephole optimizer”? a) Three-address code (TAC) b) Abstract Syntax Tree (AST) c) Bytecode d) Control Flow Graph (CFG) Answer: a) Three-address code (TAC) In intermediate code generation, what is the role of “constant propagation”? a) Replacing variables with constant values b) Generating intermediate code for constants c) Allocating registers for constants d) Optimizing code by moving constants Answer: a) Replacing variables with constant values What is “common subexpression elimination” in the context of intermediate code optimization? a) Removing repeated calculations of the same expression b) Combining similar expressions into a single expression c) Generating code for common expressions d) Eliminating redundant variables Answer: a) Removing repeated calculations of the same expression What does “dead assignment elimination” refer to in intermediate code optimization? a) Removing assignments that do not affect the program output b) Optimizing assignments in loops c) Generating intermediate code for assignments d) Combining similar assignments Answer: a) Removing assignments that do not affect the program output In the context of intermediate code generation, what is a “basic block”? a) A sequence of instructions with no branches except at the entry and exit b) A single instruction in intermediate code c) A node in a syntax tree d) A segment of source code Answer: a) A sequence of instructions with no branches except at the entry and exit Which of the following is NOT a typical feature of a “control flow graph” (CFG)? a) Nodes representing basic blocks b) Edges representing control flow between blocks c) Nodes representing variables d) Edges representing branches and jumps Answer: c) Nodes representing variables In intermediate code generation, what is “loop invariant code motion” used for? a) Moving code that does not change across loop iterations b) Generating code for loop operations c) Removing loops from the code d) Increasing loop iteration efficiency Answer: a) Moving code that does not change across loop iterations What is “strength reduction” in the context of intermediate code optimization? a) Replacing expensive operations with cheaper ones b) Reducing the strength of variables c) Removing redundant operations d) Simplifying complex expressions Answer: a) Replacing expensive operations with cheaper ones Which optimization technique focuses on reducing the number of instructions in a program? a) Code scheduling b) Instruction selection c) Common subexpression elimination d) Register allocation Answer: c) Common subexpression elimination In intermediate code generation, what does “branch optimization” typically involve? a) Improving the efficiency of branching operations b) Reordering branch instructions c) Eliminating unnecessary branches d) Generating additional branches Answer: a) Improving the efficiency of branching operations What is the primary goal of “local optimization” in intermediate code generation? a) Improving performance within a single basic block b) Optimizing the entire program c) Generating intermediate code d) Performing global code analysis Answer: a) Improving performance within a single basic block What is “global optimization” in the context of intermediate code generation? a) Optimizing the entire program across multiple basic blocks b) Improving performance within a single basic block c) Generating machine code d) Performing syntax analysis Answer: a) Optimizing the entire program across multiple basic blocks
All Copyrights Reserved 2025 Reserved by T4Tutorials