Compilers and Compilation Study Guide

0.0(0)
Studied by 0 people
call kaiCall Kai
Locked
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/23

flashcard set

Earn XP

Description and Tags

Comprehensive vocabulary flashcards covering the concepts, processes, and tools involved in software compilation and preprocessing.

Last updated 4:26 PM on 7/19/26
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai
Chat

No analytics yet

Send a link to your students to track their progress

24 Terms

1
New cards

Compiler

A piece of system software that translates high-level programming languages into machine language.

2
New cards

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.

3
New cards

Source language

A problem-oriented language, usually a high-level programming language.

4
New cards

Target language

A machine-oriented language, such as machine language or assembly language.

5
New cards

Assembler

A type of translator that performs a one-to-one translation of assembly language instructions into machine language.

6
New cards

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.

7
New cards

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.

8
New cards

#include

A preprocessor directive that searches the standard library for a specified file and replaces the directive with a copy of that file.

9
New cards

#include "filename"

A preprocessor directive that searches the current directory first, then the standard library, used for user-defined files.

10
New cards

#define

A preprocessor directive used to create symbolic constants or macros where the identifier is replaced by specified replacement-text throughout the code.

11
New cards

Macro

A symbolic constant with optional arguments that performs text substitution without data type checking during expansion.

12
New cards

#undef

A preprocessor directive used to undefine a symbolic constant or macro, allowing it to be redefined later.

13
New cards

Conditional Compilation

The use of preprocessor directives like #if, #ifdef, and #ifndef to control which parts of the program code are processed or compiled.

14
New cards

gccEgcc -E

A compiler flag that instructs the compiler to stop after the preprocessing stage and send the output to stdout.

15
New cards

gccSgcc -S

A compiler flag that stops after the compiling stage and outputs assembler code to a .s.s file.

16
New cards

gcccgcc -c

A compiler flag used to assemble source code and save it as a relocatable object file (e.g., helloworld.ohelloworld.o) without linking.

17
New cards

Object code

The output of an assembler which may contain metadata, label definitions, and relocation entries (holes) to be filled by labels defined elsewhere.

18
New cards

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.

19
New cards

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.

20
New cards

Relocatable machine code

Machine code produced by compilers, assemblers, and linkers where memory references are relative to an undetermined starting location.

21
New cards

Syntax

The structure of a programming language, typically specified using context-free grammars.

22
New cards

Context-free grammar (CFG)

A set of recursive rewriting rules used to generate patterns of strings to define the legal syntax of a language.

23
New cards

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.

24
New cards

Runtime semantics

Semantic rules of a programming language that can only be checked during the execution of the program.