Use LEFT and RIGHT arrow keys to navigate between flashcards;
Use UP and DOWN arrow keys to flip the card;
H to show hint;
A reads text to speech;
23 Cards in this Set
- Front
- Back
- 3rd side (hint)
Calling Convention |
Caller Responsible for pushing and popping for callee's arguments Callee responsible for pushing and poppong space for its own temporaries |
|
|
Rationale of memory layout in single inheritance |
For a class Child that extends Parent, a pointer of type Parent pointing at the Child still sees Parent object at the begnning |
|
|
Activation Tree |
Tree structure representing all of the function calls made by program on a particular expression |
Depends on runtime behavior of a program; can't always be determined at compile-time |
|
Subroutine |
function, when invoked, runs to completion and returns control to the calling function |
|
|
Coroutine |
function, when invoked, does some amount of work, then returns control to the calling function. It can then be resumed later. |
|
|
Call by Value |
Parameters are copies of the values specified as arguments |
|
|
Call by Reference |
Parameters are pointers to values specified as parameters |
|
|
TAC |
Instruction/Addresses that can have at most 3 operands(like MIPS). Allows further optimizations. |
three address code IR that can be easily mapped to low level machine instructions |
|
IR Optimizations Benefits |
Make Program as fast as possible Generate code with smaller memory footprint Chooses Simpler Functions Minimize function Calls |
|
|
Optimizations that is Semantics Preserving |
1.Eliminating Unnecessary temporary variables 2.Move Constant expression outside a loop 3.Computing the values which are statically known at compile time 4. Replacing Integer 1 by integer 2 with 0.5 |
|
|
IR Generation |
Intermediate Representation The final phase of the compiler front-end |
|
|
GCC Architecture Hierarchy |
Source Code Ast>Generic>High Gimple>SSA>LowGimple>RTL Machine Code |
|
|
LLVM |
Low Level Virtual Machine language agnostic design |
|
|
Architecture of LLVM Compiler |
|
|
|
Run Time Environment |
Set of data structure maintained at runtime to implement these high-level structures |
|
|
Control Link |
Pointer to function that called it, determines where to resume execution upon function return |
|
|
Access Link |
Pointer to activation record in which functions was created,nested functions use to determine location of variables from outer scope |
|
|
Dynamic Dispatch |
Calling a function at runtime based on dynamic type of an object, rather than its static type. |
|
|
Spilling |
variable is spilled stored in memory rather rhan register |
|
|
SSA Static Single Assignment |
A property of an IR where each variable defined(assigned) exactly once and each definition has to occur before it is used. |
|
|
Constant Propogation |
An optimization that replaces each variable that is known to be a constant value with a constant. To do, track what values might be assigned to a variable at each program point |
|
|
Meet Semilattice |
a ordering defined on a set of elementd |
|
|
Global Analysis |
An analysis that works on a cfg, control flor graph, as a whole. More powerful and complicated than local analysis |
|