Difficulty: Easy
Correct Answer: program that accepts a program written in a high-level language and produces an object program
Explanation:
Introduction / Context:
In the build pipeline, the compiler translates human-readable high-level language (HLL) into lower-level representations, typically object code, that can be linked and then executed. Understanding this role clarifies how compilers differ from assemblers, interpreters, linkers, and loaders.
Given Data / Assumptions:
Concept / Approach:
A compiler performs lexical, syntax, and semantic analysis, then optimization and code generation. The result is an object module or executable form (possibly with relocations) that a linker and loader will further process.
Step-by-Step Solution:
1) Parse HLL source into an abstract syntax tree.2) Perform semantic checks and intermediate code generation.3) Optimize and generate target object code.4) Emit object program for the linker.
Verification / Alternative check:
Build systems show .c → .o via compiler invocations, then linking to form executables or libraries, validating the definition.
Why Other Options Are Wrong:
Option a is the loader. Option b is the assembler. Option d describes an interpreter. Option e is not part of the compilation process.
Common Pitfalls:
Assuming the compiler also links and loads; while integrated toolchains exist, conceptually these are distinct stages.
Final Answer:
program that accepts a program written in a high-level language and produces an object program
Discussion & Comments