COS 441 Exam Stuff
description
Transcript of COS 441 Exam Stuff
![Page 1: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/1.jpg)
COS 441 Exam StuffCOS 441 Exam Stuff
David Walker
![Page 2: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/2.jpg)
TAL2
LogisticsLogistics
• take-home exam will become available on the course web site Jan 15-18
• write down when you download & when you turn in • email to kenny or deliver to his office by hand
• you have 24 hours to complete the exam
• content: anything from class, assignments, or assigned textbook readings
![Page 3: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/3.jpg)
TAL3
Content: Pre-midtermContent: Pre-midterm
• Judgments, inductive definitions, proofs by induction (Chapter 3)
• Intuitionistic logic: formulas, proofs, proof checking & the Curry-Howard isomorphism
• Untyped lambda calculus, operational semantics, properties, encodings (Chapter 5)
• Typed lambda calculus: syntax, operational semantics, typing rules, properties including type safety, progress, preservation, canonical forms, substitution, inversion principles, etc. (Chapter 8,9,11)
• Typed datastructures: tuples, sums (Chapter 11) • Implementation of programming language concepts
(syntax, substitution, operational semantics, type checking)
![Page 4: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/4.jpg)
TAL4
Content: Post-midtermContent: Post-midterm
• recursive types (Chap 20.1, 20.2)• effectful computations: references, exceptions, semantics
using evaluation contexts (Chap 13,14; evaluation contexts note above)
• quantified types: universal polymorphism, existential types, type inference (Chap 22.1-22.6, 23.1-23.5, 24)
• subtyping: subtyping relations, co-, contra-, and in-variance, subsumption rule, proving soundness of declarative system, showing subtyping rules are “bad”, don’t worry about relating declarative and algorithmic subtyping formally (Chap 15.1-5, 16.1-3)
• class-based, object-oriented languages: featherweight Java (Chap 19.1-19.5)
• applications of operational semantics & type systems: stack inspection
• stuff we cover today in lecture• implementation of any of the concepts above
![Page 5: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/5.jpg)
Typed Assembly LanguageTyped Assembly Language
David Walker
Slides stolen from:Greg Morrisett
![Page 6: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/6.jpg)
TAL6
TypesTypes
“Type systems for programming languages are a syntactic mechanism for enforcing abstraction.”
J. Reynolds
![Page 7: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/7.jpg)
TAL7
What is TAL?What is TAL?
A type system for assembly language(s):•built-in abstractions (tuple,code)
•operators to build new abstractions (,,)
•annotations on assembly code
•an abstraction checker
Thm: well-annotated code cannot violate abstractions.
![Page 8: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/8.jpg)
TAL8
What We Did What We Did [popl 98, toplas 99 & [popl 98, toplas 99 & others]others]
Theory:• small RISC-style assembly language
• compiler from System F to TAL
• soundness and preservation theorems
Practice:• most of IA32 (32-bit Intel x86)
• more type constructors • everything you can think of and more
• safe C compiler • ~40,000LOC & compiles itself
![Page 9: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/9.jpg)
TAL9
Why Type Assembly?Why Type Assembly?
Theory:•simplifies proofs of compiler correctness
•deeper understanding of compilation
Practice:•compiler debugging
•software-based protection
![Page 10: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/10.jpg)
TAL10
Type-Based Protection (JVM)Type-Based Protection (JVM)
Java Source
javac
JVM bytecodes
JVM verifier System Interface
Binary
Optimizer
Low-Level IL
SystemBinary
“Kernel”
![Page 11: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/11.jpg)
TAL11
JVM Pros & ConsJVM Pros & Cons
Pros:•portable•hype: $, tools, libraries, books, training
Cons:•trusted computing base includes JIT•requires many run-time tests
• “down” casts, arrays, null pointers, etc.
•only suitable for Java (too high-level)•no formal spec (when we started with TAL)
![Page 12: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/12.jpg)
TAL12
Ideally:Ideally:
Your favoritelanguage
Low-Level IL(SSA)
optimizer
machine code
verifier System Interface
SystemBinary“Kernel”
![Page 13: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/13.jpg)
TAL13
Rest of the Lecture: Rest of the Lecture: ExamplesExamples•TAL core types:
•bytes, tuples, code,
•Control-Flow:•calling conventions, stacks, exns
• I won’t get to:•closures, objects, modules, type
analysis, ADTs
![Page 14: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/14.jpg)
TAL14
Simple Built-In TypesSimple Built-In Types
•Bytes: b1, b2, b4
•Tuples: (11,…,n
n)
•Code: {r1:1,…, rn:n}
• like a pre-condition
•argument type of function
•no return type because code doesn’t really return, just jumps somewhere else...
•Polymorphic types: ., .
![Page 15: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/15.jpg)
TAL15
Simple LoopSimple Loopsum: {ecx:b4, ebx:{eax:b4}} ; int sum(int
x) {mov eax,0 ; int a = 0;jmp test ;
loop: {eax:b4, ecx:b4, ebx:{eax:b4}} ; while(!x) {add eax,ecx ; a += x;dec ecx ; x--;FALLTHRU ; }
test: {eax:b4, ecx:b4, ebx:{eax:b4}} ;cmp ecx,0 ;jne loop ; return(a);jmp ebx ; }
![Page 16: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/16.jpg)
TAL16
Allocation:Allocation:
mkpair: {eax:b4, ebx:{eax:(b41, b41)}}
mov ecx,eaxMALLOC eax,8,(b4, b4) ; eax : (b40,
b40)mov [eax+0],ecx ; eax : (b41,
b40)mov [eax+4],ecx ; eax : (b41,
b41)jmp ebx
![Page 17: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/17.jpg)
TAL17
Callee-Saves RegisterCallee-Saves Register
addone: .{eax:b4, ecx:, ebx:{eax:b4, ecx:}}inc eax ; x+1jmp ebx ; return
main: {ebx:{eax:b4}}mov eax,3 mov ecx,ebx ; save main’s return addressmov ebx,done jmp addone[{eax:b4}]
done: {eax:b4,ecx:{eax:b4}}inc eaxjmp ecx
![Page 18: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/18.jpg)
TAL18
In General:In General:
Need to save more stuff (e.g., locals):
MALLOC ecx,4n,(1,…,n) ; frame for storage
mov [ecx+0],r1… ; save locals
mov [ecx+4n-4],rnjmp addone[(1,…,n)]
Heap-AllocatedActivation Records
![Page 19: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/19.jpg)
TAL19
StacksStacks
Want to use stack for activation frames.
Stack types: ::= nil | :: | | 1 @ 2
![Page 20: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/20.jpg)
TAL20
Typing Stack OperationsTyping Stack Operations
{ esp: } { esp: 1::2
::…::i:: }
sub esp,i*4 add esp,i*4{ esp: b40::b40::…::b40:: } { esp :
{ r: , esp: 1::2
::…::i:: } { r: , esp: }
mov [esp+i*4],r push r{ r: , esp: 1
::2::…::1:: } { r: esp: 1:: }
{ esp: 1::2
::…::i1:: } { esp: 1:: }
mov r,[esp+i*4] pop r{ r: i, esp: 1
::2::…::i
1:: } { r: esp: }
![Page 21: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/21.jpg)
TAL21
Recursion thru Stack Recursion thru Stack VariablesVariablesfact: .{eax:b4, esp:{eax:b4, esp:}::}
cmp eax,1 jne L[]
retnL:’.{eax:b4, esp:{eax:b4, esp:’}::’}
push eax dec eaxcall fact[b4::{eax:b4, esp:’}::’]pop ecximul eax,ecxretn
![Page 22: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/22.jpg)
TAL22
Fact FactFact Fact
fact: .{eax:b4, esp:{eax:b4, esp:}::}
Because is abstract, fact cannot read or write this portion of the stack.
Caller’s frame is protected from callee…
![Page 23: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/23.jpg)
TAL26
Other TAL FeaturesOther TAL Features
•Module system• interfaces, implementations, ADTs
•Sum type/datatype support •Fancy arrays/vector typing• (Higher Order) Type constructors•Fault tolerance checking•Other people still writing papers
about more ...
![Page 24: COS 441 Exam Stuff](https://reader034.fdocuments.in/reader034/viewer/2022051623/56815a05550346895dc75130/html5/thumbnails/24.jpg)
TAL27
Long Term?Long Term?
Low-level, portable, safe language:• OO-support of Java
• typing support of ML
• programmer control of C• good model of space• good model of running time• many optimizations expressible in the language
Microsoft research working on a new compiler (Phoenix) to generate TAL