1/23
Comprehensive vocabulary flashcards covering the concepts, processes, and tools involved in software compilation and preprocessing.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Compiler
A piece of system software that translates high-level programming languages into machine language.
Compilation
A process that translates a program in a source language into an equivalent program in an object or target language, with a primary focus on the detection and reporting of errors.
Source language
A problem-oriented language, usually a high-level programming language.
Target language
A machine-oriented language, such as machine language or assembly language.
Assembler
A type of translator that performs a one-to-one translation of assembly language instructions into machine language.
Interpreter
A translator related to a compiler that takes both the source program and input data together, characteristically resulting in slower execution but easier implementation and immediate display of run-time errors.
Preprocessor
A component that processes the source code before it is compiled, handling tasks like the inclusion of other files, definition of symbolic constants and macros, and conditional compilation.
#include
A preprocessor directive that searches the standard library for a specified file and replaces the directive with a copy of that file.
#include "filename"
A preprocessor directive that searches the current directory first, then the standard library, used for user-defined files.
#define
A preprocessor directive used to create symbolic constants or macros where the identifier is replaced by specified replacement-text throughout the code.
Macro
A symbolic constant with optional arguments that performs text substitution without data type checking during expansion.
#undef
A preprocessor directive used to undefine a symbolic constant or macro, allowing it to be redefined later.
Conditional Compilation
The use of preprocessor directives like #if, #ifdef, and #ifndef to control which parts of the program code are processed or compiled.
gcc−E
A compiler flag that instructs the compiler to stop after the preprocessing stage and send the output to stdout.
gcc−S
A compiler flag that stops after the compiling stage and outputs assembler code to a .s file.
gcc−c
A compiler flag used to assemble source code and save it as a relocatable object file (e.g., helloworld.o) without linking.
Object code
The output of an assembler which may contain metadata, label definitions, and relocation entries (holes) to be filled by labels defined elsewhere.
Linker
A tool that combines assembled object code with standard library functions and resolves references to external variables and procedures to create an executable file.
Loader
A system utility that calculates absolute addresses for relocatable machine code, amends the code with these addresses, and places it into memory for execution.
Relocatable machine code
Machine code produced by compilers, assemblers, and linkers where memory references are relative to an undetermined starting location.
Syntax
The structure of a programming language, typically specified using context-free grammars.
Context-free grammar (CFG)
A set of recursive rewriting rules used to generate patterns of strings to define the legal syntax of a language.
Static semantics
Semantic rules of a programming language that can be verified at compile time, such as checking the type and number of function arguments.
Runtime semantics
Semantic rules of a programming language that can only be checked during the execution of the program.