CS 375: Lecture Notes


Copyright © Gordon S. Novak Jr.

Permission is granted for individuals to make copies of these notes for personal use, or for instructors to make copies for classroom use.

Note: Some of these pages use math symbols such as: ∀ ∃ . Microsoft Internet Explorer will not display the math symbols, but Firefox will.

Contents

absolute address 169, 179

absolute code 167

absolute file 169, 175

abstract syntax tree 325

accessor 300

activation 201

activation record 201

actual parameter 250

address 249

alias 223, 251

alignment 133

alist 326

ambiguity 21, 36

ambiguous grammar 60

antisymmetric 275

aop 318

architecture 298

arithmetic instructions 230

array 137

array performance 145

array reference 143, 239

aspect-oriented programming 318

assignment 202

assoc 326

association list 326

associativity 71

ast 325

atn 65

augmented transition network 65

automaton 39

available 282

available on entry 282

avl tree 117

babbage 292

backpatching 174

banked memory 171

base address 131

base register 168

basic block 273

behavior 299

binding 202, 250, 263, 326

binding list 326

bison 44

bit vector 277

block 273

boolean equations 282

bottom-up parsing 63

bounds check 152

bounds register 168

boxed number 307

branch 174

branch prediction 296

bss 169

bss storage 170

busy 284

byte code 204

cache 313

cache miss 296, 298

cache prefetch 296

call by name 249

call by reference 249, 250

call by value 249, 250

call overhead 200

callee-saved 235

caller-saved 235

car 324

cartesian product 275

cascading errors 30

cast 189

cdr 324

character class 16

chart parser 64

chomsky 32

chomsky hierarchy 39

church 320

cky parser 64

class 127, 299, 304

closed function 341

code generation 208, 209

code generator 167

code motion 288

code reordering 298

color 286

compare 231

compile-time 261

compiler 9

compiler generator 268

computed 280

concatenation of languages 59

condition code 231, 296

conditional jump 237

cons 192, 324

constant folding 241, 259

constant propagation 263

context free 33, 55, 56

context sensitive 57

control flow analysis 272

control stack 201

controllability 97

copying collector 195

correctness 255

cross-cutting 318

current status variable 82

data area 131

data flow 11

data flow analysis 272, 281

dead code 293

declaration 124

def-use chain 285

defined 280

definition-use chain 285

derivation 56, 58

derivative 293

difference engine 292

disambiguating rules 60

dll 183

dominator 279

dynamic 150, 263

dynamic data 263

dynamic dispatch 309

dynamic type checking 321

dynamically linked library 183

efficiency 313, 313

empty string 37

encapsulation 303, 314

environment 202

epilogue 199

equivalence 275

equivalent grammars 59

errors 30

executable 169, 175

exported symbol 178

expression 210

expression generation 211

external reference 178

finite differencing 291

fix 232

flex 44

float 232

floating point 27, 28, 29, 232

folding 259

formal parameter 250

forward branch 174

function call 234

futamura projections 268

garbage 191

garbage collection 191, 195, 321

genarith 213

genc 209

generation 34

generic 315

getchar 12

getter 300

global optimization 257, 287

goto 174

grammar 33, 38

grammar notation 37

graph 275, 276

graph coloring 285, 286

hardware 295

hash function 119

hash table 118

hash with buckets 120

heap 189

heuristic 286

hiding 302

hierarchy 299

hoisting 288

identifier lookup 128

ieee floating point 28

if statement 237

immediate 213

imported symbol 178

in-line 253, 313

induction variable 290

information hiding 300, 302

inheritance 299, 310, 314

initialize 170, 189

inline 253

inline function 341

inlining 341

instance 299, 304

instance variable 304

instruction pointer 184

interaction 321

interface 302

intermediate code 55, 157

interpretation 263

interpreted code 204

interpreter 322

intrinsic function 233

invariant code 288

ip 184

jigsaw-puzzle modularity 317

jit 313

jump 174

just in time 313

killed 280

kleene closure 37

lambda calculus 320

language generated 59

language translation 335

layer 315

leader 274

left recursion 83

left-associative 71

leftmost derivation 58

leverage 254

lex 44, 45, 49

lexer 14

lexer output 26

lexical analyzer 13, 14

lexical scoping 121

library 175, 178

lifetime 201

line handler 12

link editor 175

linker 175, 176, 181

lisp 192, 319, 325

lisp interpreter 322

list 324

literal 213, 229

load 171

loader 168

local optimization 257

location counter 172, 182

loop fusion 288

loop header 279

loop transformation 288

loop unrolling 261

looping statements 112

machine language 6

macro 252

malloc 189

mark-and-sweep 193

matching 332

matrix 289

mccarthy 320

memoization 294

memory management 189

message 300, 305

method 127, 299, 304, 305, 309

method lookup 310

mix 263

mnemonic 7

modulo unrolling 261

move instructions 226, 227

multi-processor 289

multiple inheritance 312

mutator 300

name equivalence 153

nan 170

negate 232

new 189

non-volatile 235

nonterminal 33

number conversion 24

obfuscation 342

object 304

object file 175

object-oriented programming 299

observability 97

offset 131, 182

ontology 299, 301

oop 155, 299

opacity 315

open 253

open function 341

operator precedence 70, 71, 72, 80

optimization 254, 315, 335

out-of-order 296

overhead 315

overloading 155

padding 133

parameter passing 249

parser 55, 61

parsing 35, 111

partial evaluation 262, 263, 313

partial order 275

partition 275

pattern matching 332

pattern-pair 334

pc 184

peekchar 12, 12

peephole 159

peephole optimization 260

performance 152, 246, 289, 295

pic 184

pie 184

pointer 148, 242

pointer arithmetic 189

pointer reference 148

polish 161

polymorphic 155

polymorphism 155, 314

position independent code 184

position independent executable 184

postamble 199

postincrement 290

powerpc 296

preamble 199

precedence 71

precompute 263

pretty-printer 79

printf 188

processor stall 298

productions 33

program analysis 272

program counter 184

prologue 199

prove 255

quadruple 159

quote 324

read-eval-print loop 322

record 135

record reference 142

recursion 321

recursive 56

recursive descent 58, 83

reduce 70

reducing 263

reduction in strength 258

reference counting 196

referenced 280

reflexive 275

register allocation 215, 285, 286

register management 214

register reuse 217

register window 297

regular expressions 45

regular language 42

relation 275

release storage 190

relocatable 175, 177

relocatable code 167

relocate 182

relocation bit 182

representation 321

reserved word 21

restore registers 199

retarget 157

return address 199

return statement 199

reverse polish 161

right-associative 71

rightmost derivation 58

row-major order 144

rpn 161

run-time 261

run-time library 186

save registers 199

scheme 320

scope 121

search 310

selector 304, 305, 309, 310

self 313

semantics 68

send 300, 305

separate compilation 154

setter 300

shadow 122

shadowing 123, 310

shift 70, 241

shift-reduce parser 86

side-effect 315

signature 154

simula 299

simulation 299

snan 170

sound 152

space 254

sparc 297

specialize 263, 313

speculative execution 296

speedup 289

spill code 286

stack 56, 201

stack frame 201

stack machine 164

stall 298

start address 168

start symbol 38

state 202

static 151, 263

static data 263

storage alignment 133

storage allocation 132, 179

storage leak 190

storage management 190

store 171

store-multiple 296

strength reduction 258

strip mining 289

strong typing 152

structural equivalence 153

structure example 146

structure reference 140

subclass 304

sublis 327

subscripts 82

subst 327, 328

substitution 249, 327, 329

super 304

superclass 304

superscalar 296

switch 243

symbol table 113, 134

symbolic 319

symbols 126

symmetric 275

syntax 21, 32

synthesized translation 89

table lookup 237, 246, 313

tag 150

terminal 33

this 309

three-address code 159

time 254

token 13, 22, 23

top-down filtering 62

top-down parser 62

transform 263, 268, 288, 334

transformation 319, 335, 342

transitive 275

tree form 79

triad 160

triple 160

type checking 139, 150, 151

type coercion 139

type constructor 149

type equivalence 153

type inference 139

type lattice 139

type safety 189

type signature 154

types as trees 149

unary 82

undefined symbol 124, 178

unfolding 263

union of languages 59

unrolling 261

use number 218

used 215, 280

var 249

variable declaration 129

variant record 152

virtual method table 311

vmt 311

volatile 235

vtable 311

white space 18

write 188

writeln 188

x86 processor 225

yacc 90

yacc code 130

yacc grammar 94

yacc hints 101


CS 375