Abstract machines
Abstract syntax tree
Accessing code
header files
Addressing
base-indexed with scale and displacement
direct
immediate
indirect addressing
Address space
Address space layout randomization (ASLR)
Alignment
Address translation process
DEP and EXB
page table entry
PML4
segmentation faults
TLB
Array
defined
initializers
memory allocators
summation functionality
bug
const qualifiers
Assembly code
dictionary implementation
dynamic library
GCC and NASM
Assembly language
constant precomputation
endianness
function calls
instruction
mov
syscall
label
output register
local labels
rax value
relative addressing
pointer
string length computation
strings
Assembly preprocessor
conditionals
%define
macros with arguments
Assertions
Backus-Naur form (BNF)
Binutils
BitMaP (BMP) format
BNF (Backus-Naur form)
Booleans
Branch prediction
Breakpoint
C
C89
compilation
control flow
fibonacci series
for
switch
while
dangling else
data types
Duff’s device
expressions
function
main function
preprocessor
block
#define
#endif
#ifndef
#include
program structure
statements
block
C11
alignment
Caching
binary search, prefetching
cache-lines
cache-miss
LL-cache
matrix initialization
memory
memory bypassing
prefetching
use case
Calling convention
variable arguments count
ellipsis
Calling function
Chomsky hierarchy
CISC
C11 memory model
atomics
Intel 64
memory ordering
operations
Code models
kernel
large
PIC
without PIC
medium
PIC
without PIC
small
PIC
without PIC
Code reusability
Coding style
characteristics
file structure
functions
integer types
naming
types
variables
Compilation process
preprocessor
translation
Compiler
Condition variables
const types
Context-free grammars
Context-sensitive grammars
Data Execution Prevention (DEP)
Data models
Data streams
Data structure padding
Data types
static weak typing
strong typing
weak typing
Deadlocks
Debugging
Declarations
forward declaration
functions
incomplete type
structure
Descriptor Privilege Level
Directive
Distributed factorization
Dynamic array
scanf function
Dynamic library
calling function
.dynstr
.dynsym
.hash
optimizations
Dynamic linker
Dynamic Memory Allocation
ELF (Executable and Linkable Format)
file type
headers
.dynstr
.dynsym
.hash
execution view
linking view
Program Header Table
section controls
sections
.bss
.data
.debug
.dynstr
.dynsym
execution view
.fini
.hash
.init
.line
linking view
.rel.data
.rel.text
.rodata
.strtab
.symtab
.text
section table
segments
structure
Encapsulation
Enumerations
Error handling
Executable object file
Execution unit
External variable, access
Fibonacci series
File
File descriptor
Files and documentation
File structure
Finite state machines
bits parity
definition
limitation
regular expressions
undefined behavior
verification techniques
Forbidden address
Formal grammars
arithmetics
arithmetics with priorities
Chomsky hierarchy
imperative language
natural numbers
nonterminals
recursive descent
symbols
terminals
Forth machine
architecture
bootstrap
compilation
compiler
conditional
dictionary
execution token,113–114
immediate flag
immediate words
indirect threaded code
inner interpreter
native word
outer interpreter
PC
PC register
pseudocode
quadratic equation manipulation
static dictionary
word list
words implementation
W register
Forward declaration
Function
Functional types
Function calling sequence
callee-saved register
caller-saved register
calling convention
red zone
return address
return a value
system calls
variable arguments count
vprintf
XMM registers
Function prototypes
gdb
autocompletion
breakpoint
call stack
commands
FMT
-ggdb
Intel syntax
rax register
stack
Global Descriptor Table (GDT)
Global Offset Table
Good code practices
Header files
Heap
Higher-order functions
Image rotation
architecture
BitMaP (BMP) format
Immutability
Implicit conversions
Include guard
Incomplete type
Indirect threaded code
Inline
Input/output (I/O) ports
tr register
Instruction cache
Instruction decoder
Integer promotion
Intel 64
architecture
bugs
constraints
main function
reordering
Interrupts
#BP
descriptor
error code
#GP
IDTR register
interrupt descriptor
Interrupt Descriptor Table (IDT)
interrupt handler
interrupt stack table
iretq instruction
#PF
Intermediate Representation (IR)
Kernel code model
Lazy Memory Allocation
LD_PRELOAD
Legacy processor modes
long
protected
real mode
Lexical analysis
Library
Linkage
Linked list
Linked objects
Linker
symbol
Linking
alignment
libraries
Livelocks
Loader
Locality of reference
Lock-free programming
Logical address
Long mode
segmentation
longjmp
See alsosetjmp
lvalue
expression
statement
Machine word
Macro expansion
Macro instances
Macros
Main function
Makefile
automatic variables
malloc implementation
Map-reduce technique
Memory allocation
automatic
dynamic
static
Memory Allocator
Memory barrier
Memory leak
Memory Management Unit (MMU)
Memory map/mapping
null terminated string
Memory model
allocation, dynamic
memory leak
void* pointer
Memory region
Model of computation
Model-Specific Registers (MSR)
Module
Multithreading
execution order
memory barrier
POSIXthreads
process
reordering
strong and weak memory model
thread
use case
volatile
Mutexes
Namespaces
Naming convention
Natural numbers
Non-deterministic finite automaton (NFA)
Numeric types
Object file
Operator sizeof
Optimizations
branch prediction
compiler flags
constant propagation
execution unit
grouping reads and writes
low-level
performance tests
profiler
return value
stack frame pointer omission
subexpressions elimination
tail recursion
Parser combinators
Parsing complex definition
Physical address
Pointer arithmetic
Pointers
array
function
NULL
ptrdiff_t
void*
Polymorphism
coercions
definition
inclusion
overloading
parametric
Position independent code (PIC)
Pragmatics
alignment
data structure padding
Preloading
Preprocessor
condition
argument type
on definition
text identity
%define
#define directive
evaluation order
#ifdef
include guard
labels inside macros
pitfalls
#pragma once
repetition
substitutions
with arguments
conditionals
macros
symbols
Prime number
Prime number checker
Procedure
Programming language
Protected mode
far jump
GDT/LDT
RPL
segment descriptor
segment selector
Protection rings
#BP
#GP
#PF
#UD
Pthreads
condition variables
deadlocks
distributed factorization
joinable thread
livelocks
multithreading, use case
mutexes
semaphore
set attributes function
spinlocks
synchronization
threads, creation
ptrdiff_t
Real mode
segment
segment registers
Reduced Instruction Set Computer (RISC)
Registers
advantages
callee-saved
CISC and RISC
instruction decoder
locality of reference
rax decomposition
rflags
rip
rsi and rdi decomposition
rsp and rbp decomposition
segment
Regular expressions
Relocatable object files
Relocations
Relocation table
Reenterable
restrict
rvalue
See alsolvalue
scanf
Scalar product
Security
address space
DEP
format output functions
return-to-libc
stack buffer overrun
Security cookie
Segmentation faults
Segment selector
Semantics
implementation-defined behavior
sequence points
undefined behavior
unspecified behavior
Semaphore
setjmp
See alsolongjmp
longjmp
volatile
Shadow register
Shared object file
lookup scope
Shellcode
SIMD Instruction Class
Signal
SIGSEGV
sizeof
Source file structure
Spatial locality
Speedup
Spinlocks
SSE and AVX extensions
addps and movdqa
ALUs
AVX
movdqa and mulps
packed
sepia filter
Standard library
Statements
Static
Static keyword
Static libraries
stderr
stdin
stdout
Strict aliasing rule
String interning
String length manipulation
String literals
Strings
null-terminated
Structures
Symbol resolution
Symbol table
Syntax
abstract
concrete
sysret
System calls
close
exit
mmap
model-specific registers
munmap
open
read
write
Task State Segment (TSS)
Temporal locality
Tokens
Translation
Translation Lookaside Buffer
Type alias
Type casting
typedef
Type system
booleans
implicit conversions
numeric types
pointers
type casting
Typing
dynamic typing
explicit typing
implicit typing
static typing
weak typing
Undefined behavior
Unions
Verification
Virtual address
canonical address
Virtual memory
address space
address translation process
PML4
allocation
bus error
caching
efficiency
forbidden address access
mapping
memory map
page
anonymous pages
frame
sizes
region
replacement strategies
swap file
virtual address structure
working set
Volatile memory allocation
Volatile variables
GCC
pointer
von Neumann architecture
advantages
assembly language
extensions
hardware stack
interrupts
memory
protection rings
registers
virtual memory
XMM registers