Top Banner
FunTAL: Reasonably Mixing a Functional Language with Assembly Daniel Patterson, Jamie Perconti, Christos Dimoulas, Amal Ahmed Irene Yoon
100

FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Jul 11, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

FunTAL: Reasonably Mixing a Functional

Language with Assembly

Daniel Patterson, Jamie Perconti, Christos Dimoulas, Amal Ahmed

Irene Yoon

Page 2: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Mixed Language Programs

High-level LanguageHigh-level Language

Low-level Language

Page 3: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Mixed Language Programs

High-level Language

Inline assembly

Page 4: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Mixed Language Programs

High-level Language

Inline assembly

+ hardware access

+ fine-tune performance

Page 5: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Mixed Language Programs

• no safety guarantees

• low-level code can

• alter control flow

• mutate inaccessible values

• introduce security vulnerabilities

Page 6: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Mixed Language Programs

High-level Language

Assembly

JITThis portion can be

compiled!

Page 7: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Mixed Language Programs

High-level Language

Assembly

JITThis portion can be

compiled!

Verification of correctness?

Page 8: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Mixed Language Programs

High-level Language

Assembly

Verification of correctness?

=

Need to prove contextual equivalence

Page 9: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Goals

• Safely mix high-level and low-level code

• Prove contextual equivalence of mixed programs

Page 10: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

FunTAL

• Multi-language

• Embeds assembly in typed functional language

• Embeds typed functional language in assembly

Page 11: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

FunTAL Goals

• Appropriate granularity for comparison

• Keep low-level language low and high-level language high

• Mix high-level and low-level language

• Prove (contextual) equivalence

Page 12: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Fun + TAL

Page 13: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Fun : Functional Language

• Simply Typed Lambda Calculus

• (iso-) recursive types

Page 14: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Fun + Assembly

Page 15: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Assembly

Page 16: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Assembly

• Inherently non-compositional

Page 17: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Assembly

• Inherently non-compositional

direct jump

Page 18: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Assembly

• Inherently non-compositional

_______ _______ _______ _______ _______ _______

call stack

direct jump

Page 19: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Mixing Fun

direct jump

_______ _______ _______ _______ _______ _______

call stack

Fun

compositional

Page 20: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Mixing Fun

Fun

compositional

• Need to constrain non-compositional behavior

Page 21: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Fun + (compositional) TAL

Page 22: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

TAL : Typed Assembly Language

• Types at assembly level

• Stack-based TAL = STAL

[Morrisett, Crary, Glew, Walker ’98]

Page 23: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

TAL : Typed Assembly Language

• Types at assembly level

• Stack-based TAL = STAL

[Morrisett, Crary, Glew, Walker ’98]

HeapTyping

Page 24: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

TAL : Typed Assembly Language

• Types at assembly level

• Stack-based TAL = STAL

[Morrisett, Crary, Glew, Walker ’98]

HeapTyping

Type Env

Page 25: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

TAL : Typed Assembly Language

• Types at assembly level

• Stack-based TAL = STAL

[Morrisett, Crary, Glew, Walker ’98]

HeapTyping

Type EnvRegister File

Typing

Page 26: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

TAL : Typed Assembly Language

• Types at assembly level

• Stack-based TAL = STAL

[Morrisett, Crary, Glew, Walker ’98]

HeapTyping

Type EnvRegister File

Typing

Stack Typing

Page 27: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

TAL : Typed Assembly Language

• Types at assembly level

• Stack-based TAL = STAL

[Morrisett, Crary, Glew, Walker ’98]

HeapTyping

Type EnvRegister File

Typing

Stack Typing

instr; … ; jmp l

Page 28: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 29: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 30: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Fun + (compositional) TAL

Page 31: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 32: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

type parameter register stack

typing preconditions

Page 33: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

type parameter register stack

typing preconditions

Page 34: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

type parameter register stack

typing preconditions

Page 35: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

type parameter register stack

typing preconditions

Page 36: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

TAL in Fun

Fun

TAL

Page 37: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

_________________ _________________

Granularity

Page 38: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

_________________ _________________

assembly components

Page 39: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

_________________ _________________

assembly components

Page 40: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

_________________ _________________

instr. sequence

(basic block)

localheap

fragment

assembly components

Page 41: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

TAL Components

• Represent one or more basic blocks

• Local heap fragment - locations to code blocks used in jumps

• Similar granularity to expressions in Fun

instr. sequence

localheap

fragment

Page 42: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Fun + (compositional, TAL component-based)

Page 43: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

FunTAL Goals

• Appropriate granularity for comparison

• Keep low-level language low and high-level language high

• Mix high-level and low-level language

• Prove (contextual) equivalence

Page 44: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

_________________ _________________

Page 45: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

_________________ _________________ Input Output

Page 46: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

type parameter register stack

typing preconditions

Page 47: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 48: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

return addr l l

Page 49: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Return Marker

• return marker specifies register/stack position where return continuation is stored

Page 50: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Result Type

• Must provide components with return continuations

• Called f/ assembly jump: jump to next instr.

• Called f/ high level code: contain halt

Page 51: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

End / Halt

Page 52: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Polymorphic return marker

Page 53: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Polymorphic return markerI know

the future!!!

Page 54: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Polymorphic return marker

caller instantiates where control flow should go next

Page 55: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

FunTAL Goals

• Appropriate granularity for comparison

• Keep low-level language low and high-level language high

• Mix high-level and low-level language

• Prove (contextual) equivalence

Page 56: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

jmp

call

bz

Page 57: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 58: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Component Based Jumps

• intra-component jump jmp

• inter-component jump ret

• inter-component jump call

Page 59: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

jmp (intra-component)

“current component will terminate by jumping to a same TAL component”

=> same return marker

Page 60: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

jmp (intra-component)

“current component will terminate by jumping to a same TAL component”

=> same return marker

Page 61: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

ret (intra-component)

“returning from a component(jumping back to different component)”

Page 62: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

ret (intra-component)

“returning from a component (jumping back to different component)”

=> no restrictions on return marker

Page 63: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

call (inter-component)

“current component will terminate by halting”

Page 64: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

call (inter-component)

• STAL stack-tail polymorphism : “callee-saved” stack tail

“current component will terminate by halting”

Page 65: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

“current component will terminate by jumping to another TAL component”

call (inter-component)

Page 66: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 67: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 68: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 69: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 70: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 71: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 72: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 73: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 74: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 75: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 76: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 77: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 78: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 79: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 80: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL
Page 81: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

FunTAL Goals

• Appropriate granularity for comparison

• Keep low-level language low and high-level language high

• Mix high-level and low-level language

• Prove (contextual) equivalence

Page 82: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

def fn(x): _________________ _________________

Page 83: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

def fn(x): _________________ _________________

need multi-language!

Page 84: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Multi-Language• Syntax of both languages combined

• Boundary terms added to mediate interactions

[Matthews-Findler `07]

Fun TAL (e) TAL Fun (e)

Page 85: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Multi-Language• Syntax of both languages combined

• Boundary terms added to mediate interactions

[Matthews-Findler `07]

Fun TAL (e) TAL Fun (e)

Page 86: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Multi-Language• Syntax of both languages combined

• Boundary terms added to mediate interactions

[Matthews-Findler `07]

translation meta-functionreduce

Fun TAL (e) TAL Fun (e)

Page 87: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Multi-Language FunTAL

Page 88: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Multi-Language FunTAL

Page 89: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Multi-Language FunTAL

Page 90: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Multi-Language FunTAL

Page 91: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Fun in TAL

def fn(x): _________________ _________________

Page 92: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Import (Fun in TAL)

Page 93: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

FunTAL Goals

• Appropriate granularity for comparison

• Keep low-level language low and high-level language high

• Mix high-level and low-level language

• Prove (contextual) equivalence

Page 94: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Mixed Language Programs

High-level Language

Assembly

Verification of correctness?

=

Need to prove contextual equivalence

Page 95: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Logical Relation for Multi-Language

https://dbp.io/talks/2017/funtal-pldi.pdf

Page 96: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Equivalence in Fun

“related inputs result in related outputs”

https://dbp.io/talks/2017/funtal-pldi.pdf

Page 97: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Equivalence in TAL

https://dbp.io/talks/2017/funtal-pldi.pdf

Page 98: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Demo

• https://dbp.io/artifacts/funtal/

Page 99: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Future Work

• Verification of JIT transformations

• Compositional compiler correctness

• Return markers for slightly higher-level languages

Page 100: FunTAL: Reasonably Mixing a Functional Language with Assemblyeuisuny/talks/funtal.pdf · 2020-01-04 · TAL : Typed Assembly Language • Types at assembly level • Stack-based TAL

Goals

• Safely mix high-level and low-level code

• Prove contextual equivalence of mixed programs