CS 375: Lecture Notes


Copyright © 2009 by 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: Many of these pages use math symbols such as: &forall &exist . Microsoft Internet Explorer will not display the math symbols, but Firefox will.

Contents

absolute address 165, 174

absolute code 163

absolute file 165

abstract syntax tree 335

activation 196

activation record 196

address 249

alias 224

alignment 130

alist 336

ambiguity 22, 37

ambiguous grammar 61

annotate 267

antisymmetric 277

aop 328

architecture 304

arithmetic instructions 230

array 134

array performance 142

array reference 140, 239

aspect-oriented programming 328

assignment 197

assoc 336

association list 336

associativity 72

ast 335

atn 66

augmented transition network 66

automaton 40

available 285

available on entry 285

avl tree 115

babbage 297

backpatching 170

banked memory 167

base address 128

base register 164

basic block 275

behavior 305

binding 197, 261, 336

binding list 336

binding time analysis 267

bison 45

bit vector 279

block 275

boolean equations 285

bottom-up parsing 64

bounds check 149

bounds register 164

branch prediction 302

bss 165

bss storage 166

busy 287

byte code 206

cache 319

cache miss 302, 304

cache prefetch 302

call by name 249

call by reference 249

call by value 249

call overhead 195

car 334

cartesian product 277

cascading errors 31

cast 183

cdr 334

character class 17

chart parser 65

chomsky 33

chomsky hierarchy 40

church 330

class 305, 310

closed function 353

code generation 210

code generator 163

code motion 293

code reordering 304

color 289

common 178

compare 231

compile-time 259

compiler 9

compiler generator 268

computed 283

concatenation of languages 60

condition code 231, 302

conditional branch 237

cons 187, 334

constant folding 257

constant propagation 261

context free 34, 56, 57

context sensitive 58

control flow analysis 274

control stack 196

copying collector 190

correctness 253

cross-cutting 328

data area 128

data flow 11

data flow analysis 274, 284

dead code 298

def-use chain 288

defined 283

definition-use chain 288

delay 231

derivation 57, 59

derivative 298

difference engine 297

disambiguating rules 61

dll 179

dominator 281

dot matching 347

dynamic 147, 261, 267

dynamic data 261

dynamically linked library 179

efficiency 319, 319

empty string 38

encapsulation 309, 324

environment 197

epilogue 194

equivalence 277

equivalent grammars 60

errors 31

exported symbol 173

expression 211

expression generation 212

external reference 173

finite differencing 296

flex 45

float 232

floating point 28, 29, 30, 232

folding 257

forward branch 170

frame pointer 227

function call 234

futamura projections 268

garbage 186

garbage collection 186, 190, 331

genarith 214

genc 210

generation 35

generic 325

getchar 12

global optimization 255, 290

grammar 34, 39

grammar notation 38

graph 277, 278

graph coloring 288, 289

hardware 301

hash function 117

hash table 116

hash with buckets 118

heap 183

heuristic 289

hiding 308

hierarchy 305

identifier lookup 125

if statement 237

imported symbol 173

in-line 251, 319

induction variable 295

information hiding 308

inheritance 305, 316, 324

initialize 166, 183

inline 251

inline function 353

inlining 353

instance 305, 310

instance variable 310

interaction 331

interface 308

intermediate code 56, 154

interpretation 261

interpreted code 206

interpreter 332

interval 282, 286

intrinsic function 233

invariant code 293

jigsaw-puzzle modularity 327

just in time 319

killed 283

kleene closure 38

lambda calculus 330

language generated 60

language translation 345

layer 325

leader 276

left recursion 82

left-associative 72

leftmost derivation 59

leverage 252

lex 45, 46, 50

lexer output 27

lexical analyzer 13, 16

lexical scoping 119

library 173

lifetime 196

line handler 12

link editor 171, 176

lisp 187, 329, 335

lisp interpreter 332

list 334

loader 164

local optimization 255

location counter 168, 177

loop header 281

loop transformation 293

loop unrolling 259

looping statements 110

machine language 6

macro 250

malloc 183

mark-and-sweep 188

matching 342

matrix 294

mccarthy 330

memoization 300

memory management 183

message 306, 311, 315

method 310, 311

method lookup 316

mix 261

mnemonic 7

modulo unrolling 259

multi-processor 294

multiple inheritance 318

name equivalence 150

nan 166

nonterminal 34

number conversion 25

obfuscation 354

object 310

object-oriented programming 305

offline 267

offset 128, 177

online 267

oop 152, 305

opacity 325

open 251

open function 353

operator precedence 71, 72, 73, 79

optimization 252, 325, 345

out-of-order 302

overhead 325

overloading 152

padding 130

parameter passing 249

parser 56, 62

parsing 36, 109

partial evaluation 260, 261, 319

partial order 277

partition 277

pattern matching 342

pattern-pair 344

peekchar 12, 12

peephole 155

peephole optimization 258

performance 149, 246, 294, 301

pointer 145, 242

pointer arithmetic 183

pointer reference 145

polish 157

polymorphic 152

polymorphism 152, 324

postamble 194

powerpc 302

preamble 194

precedence 72

precompute 261

pretty-printer 78

processor stall 304

productions 34

program analysis 274

prologue 194

prove 253

quadruple 155

quote 334

read-eval-print loop 332

record 132

record reference 139

recursion 331

recursive 57

recursive descent 82

reduce 71

reducing 261

reduction in strength 256

reference counting 191

referenced 283

reflexive 277

register allocation 216, 288, 289

register architecture 227

register management 215

register reuse 218

register window 235, 303

regular expressions 46

regular language 43

relation 277

release storage 184

relocatable 172

relocatable code 163

relocate 177

relocation bit 177

representation 331

reserved word 22

restore registers 194

retarget 154

return address 194

return statement 194

reverse polish 157

rewrite rule 350

right-associative 72

rightmost derivation 59

row-major order 141

rpn 157

run-time 259

run-time library 180

save registers 194

scheme 330

scope 119

search 316

selector 311, 316

self 315, 319

semantics 15, 69

send 306, 311, 315

separate compilation 151

set 299

shadowing 121, 316

shift 71, 241

shift-reduce parser 85

side-effect 325

signature 151

simula 305

simulation 305

smalltalk 320, 321

snan 166

sound 149

space 252

sparc 303

sparc processor 226

specialize 261, 319

speculative execution 302

speedup 294

spill code 289

stack 57, 196

stack frame 196

stack machine 160

stack pointer 227

stall 304

start address 164

start symbol 39

state 197

static 148, 261, 267

static data 261

storage alignment 130

storage allocation 129, 174

storage leak 184

storage management 184

store-multiple 302

strength reduction 256

strip mining 294

strong typing 149

structural equivalence 150

structure example 143

structure reference 137

subclass 310

subgraph 282

sublis 337

subscripts 81

subst 337, 338

substitution 249, 337, 339

super 310

superclass 310

superscalar 302

switch 243

symbol table 111, 131

symbolic 329

symbols 123

symmetric 277

syntax 22, 33

synthesized translation 88

table lookup 237, 246, 319

terminal 34

thinglab 323

this 315

three-address code 155

time 252

token 13, 23, 24

top-down filtering 63

top-down parser 63

transform 261, 268, 293, 344

transformation 329, 345, 354

transitive 277

tree form 78

triad 156

triple 156

type checking 136, 147, 148

type coercion 136

type constructor 146

type equivalence 150

type inference 136

type safety 183

type signature 151

types as trees 146

unary 81

undefined symbol 173

unfolding 261

union of languages 60

unrolling 259

use number 219

used 216, 283

var 249

variable declaration 126

variant record 149

volatile 235

white space 19

yacc 89

yacc code 127

yacc grammar 93

yacc hints 99


CS 375