123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \newcommand{\LangInt}{\ensuremath{R_{\ttm{Int}}}} % R0
- \newcommand{\LangVar}{\ensuremath{R_{\ttm{Var}}}} % R1
- \newcommand{\LangCVar}{\ensuremath{C_{\ttm{Var}}}} % C0
- \newcommand{\LangVarANF}{\ensuremath{R^{\mathsf{ANF}}_{\ttm{Var}}}}
- \newcommand{\LangIf}{\ensuremath{R_{\ttm{If}}}} %R2
- \newcommand{\LangCIf}{\ensuremath{C_{\ttm{If}}}} %C1
- \newcommand{\LangIfANF}{\ensuremath{R^{\mathsf{ANF}}_{\ttm{if}}}} %R2
- \newcommand{\LangVec}{\ensuremath{R_{\ttm{Vec}}}} %R3
- \newcommand{\LangStruct}{\ensuremath{R^{\ttm{Struct}}_{\ttm{Vec}}}} %R^s3
- \newcommand{\LangCVec}{\ensuremath{C_{\ttm{Vec}}}} %C2
- \newcommand{\LangVecANF}{\ensuremath{R^{\mathsf{ANF}}_{\ttm{Vec}}}} %R3
- \newcommand{\LangAlloc}{\ensuremath{R_{\ttm{Alloc}}}} %R3'
- \newcommand{\LangFun}{\ensuremath{R_{\ttm{Fun}}}} %R4
- \newcommand{\LangCFun}{\ensuremath{C_{\ttm{Fun}}}} %C3
- \newcommand{\LangFunANF}{\ensuremath{R^{\mathsf{ANF}}_{\ttm{Fun}}}} %R4
- \newcommand{\LangFunRef}{\ensuremath{R_{\ttm{FunRef}}}} %F1
- \newcommand{\LangFunRefAlloc}{\ensuremath{R^{\ttm{Alloc}}_{\ttm{FunRef}}}} %R'4
- \newcommand{\LangLam}{\ensuremath{R_\lambda}} %R5
- \newcommand{\LangCLam}{\ensuremath{C_{\ttm{Clos}}}} %C4
- \newcommand{\LangAny}{\ensuremath{R_{\ttm{Any}}}} %R6
- \newcommand{\LangAnyFunRef}{\ensuremath{R^{\ttm{FunRef}}_{\ttm{Any}}}} %R'6
- \newcommand{\LangAnyAlloc}{\ensuremath{R^{\ttm{Alloc}}_{\ttm{Any}}}} %R'6
- \newcommand{\LangCAny}{\ensuremath{C_{\ttm{Any}}}} %C5
- \newcommand{\LangDyn}{\ensuremath{R_{\ttm{Dyn}}}} %R7
- \newcommand{\LangDynFunRef}{\ensuremath{R^{\ttm{FunRef}}_{\ttm{Dyn}}}} %R'7
- \newcommand{\LangLoop}{\ensuremath{R_{\ttm{While}}}} %R8
- \newcommand{\LangLoopFunRef}{\ensuremath{R^{\ttm{FunRef}}_{\ttm{While}}}} %R'8
- \newcommand{\LangLoopAlloc}{\ensuremath{R^{\ttm{Alloc}}_{\ttm{While}}}} %R'8
- \newcommand{\LangCLoop}{\ensuremath{C_{\circlearrowleft}}} %C7
- \newcommand{\LangLoopANF}{\ensuremath{R^{\mathsf{ANF}}_{\ttm{While}}}} %R8
- %\newcommand{\LangArray}{\ensuremath{R^{\ttm{Vecof}}_{\ttm{While}}}} %R^s3
- \newcommand{\LangArray}{\ensuremath{R_{\ttm{Array}}}} %R^s3
- \newcommand{\LangGrad}{\ensuremath{R_{\ttm{?}}}} %R9
- \newcommand{\LangCast}{\ensuremath{R_{\ttm{cast}}}} %R9'
- \newcommand{\LangProxy}{\ensuremath{R_{\ttm{proxy}}}} %R8''
- \newcommand{\LangPVec}{\ensuremath{R_{\ttm{PVec}}}} %R8''
- \newcommand{\LangPVecFunRef}{\ensuremath{R^{\ttm{FunRef}}_{\ttm{PVec}}}} %R8''
- \newcommand{\LangPVecAlloc}{\ensuremath{R^{\ttm{Alloc}}_{\ttm{PVec}}}} %R8''
- \newcommand{\LangPoly}{\ensuremath{R_{\ttm{Poly}}}} %R10
- \newcommand{\LangInst}{\ensuremath{R_{\ttm{Inst}}}} %R'10
- \newcommand{\LangCLoopPVec}{\ensuremath{C^{\ttm{PVec}}_{\circlearrowleft}}} %Cp7
- \newcommand{\LangTuple}{\ensuremath{R_{\ttm{Tuple}}}}
- \newcommand{\LangCTuple}{\ensuremath{C_{\ttm{Tuple}}}}
- \newcommand{\LangXVar}{\ensuremath{\mathrm{x86}_{\ttm{Var}}}} % pseudo x86_0
- \newcommand{\LangXASTInt}{\ensuremath{\mathrm{x86}_{\ttm{Int}}}} % x86_0
- \newcommand{\LangXInt}{\ensuremath{\mathrm{x86}_{\ttm{Int}}}} %x86^{\dagger}_0
- \newcommand{\LangXASTIf}{\ensuremath{\mathrm{x86}_{\ttm{If}}}} %x86_1
- \newcommand{\LangXIf}{\ensuremath{\mathrm{x86}_{\ttm{If}}}} %x86^{\dagger}_1
- \newcommand{\LangXIfVar}{\ensuremath{\mathrm{x86}^{\ttm{Var}}_{\ttm{If}}}} %x86^{*}_1
- \newcommand{\LangXASTGlobal}{\ensuremath{\mathrm{x86}_{\ttm{Global}}}} %x86_2
- \newcommand{\LangXGlobal}{\ensuremath{\mathrm{x86}_{\ttm{Global}}}} %x86^{\dagger}_2
- \newcommand{\LangXGlobalVar}{\ensuremath{\mathrm{x86}^{\ttm{Var}}_{\ttm{Global}}}} %x86^{*}_2
- \newcommand{\LangXIndCall}{\ensuremath{\mathrm{x86}_{\ttm{callq*}}}} %x86_3
- \newcommand{\LangXIndCallVar}{\ensuremath{\mathrm{x86}^{\ttm{Var}}_{\ttm{callq*}}}} %x86^*_3
- \newcommand{\LangXAlloc}{\ensuremath{\mathrm{x86}_{\ttm{Alloc}}}}
- \newcommand{\LangXFun}{\ensuremath{\mathrm{x86}_{\ttm{Fun}}}}
- \newcommand{\itm}[1]{\ensuremath{\mathit{#1}}}
- \newcommand{\ttm}[1]{\ensuremath{\mathtt{#1}}}
- \newcommand{\Stmt}{\itm{stmt}}
- \newcommand{\Exp}{\itm{exp}}
- \newcommand{\Def}{\itm{def}}
- \newcommand{\Type}{\itm{type}}
- \newcommand{\FType}{\itm{ftype}}
- \newcommand{\Instr}{\itm{instr}}
- \newcommand{\Block}{\itm{block}}
- \newcommand{\Tail}{\itm{tail}}
- \newcommand{\Prog}{\itm{prog}}
- \newcommand{\Arg}{\itm{arg}}
- \newcommand{\Atm}{\itm{atm}}
- \newcommand{\Reg}{\itm{reg}}
- \newcommand{\Int}{\itm{int}}
- \newcommand{\Var}{\itm{var}}
- \newcommand{\Op}{\itm{op}}
- \newcommand{\key}[1]{\texttt{#1}}
- \newcommand{\code}[1]{\texttt{#1}}
- \newcommand{\LP}[0]{\key{(}}
- \newcommand{\RP}[0]{\key{)}}
- \newcommand{\LS}[0]{\key{[}}
- \newcommand{\RS}[0]{\key{]}}
- \newcommand{\INT}[1]{\key{(Int}\;#1\key{)}}
- \newcommand{\BOOL}[1]{\key{(Bool}\;#1\key{)}}
- \newcommand{\PRIM}[2]{\LP\key{Prim}~#1~\LP #2\RP\RP}
- \newcommand{\READ}{\key{(Prim}\;\code{read}\;\key{())}}
- \newcommand{\CREAD}{\key{(read)}}
- \newcommand{\NEG}[1]{\key{(Prim}\;\code{-}\;\code{(}#1\code{))}}
- \newcommand{\CNEG}[1]{\LP\key{-}~#1\RP}
- \newcommand{\PROGRAM}[2]{\LP\code{Program}\;#1\;#2\RP}
- \newcommand{\CPROGRAM}[2]{\LP\code{CProgram}\;#1\;#2\RP}
- \newcommand{\XPROGRAM}[2]{\LP\code{X86Program}\;#1\;#2\RP}
- \newcommand{\PROGRAMDEFSEXP}[3]{\code{(ProgramDefsExp}~#1~#2~#3\code{)}}
- \newcommand{\PROGRAMDEFS}[2]{\code{(ProgramDefs}~#1~#2\code{)}}
- \newcommand{\ADD}[2]{\key{(Prim}\;\code{+}\;\code{(}#1\;#2\code{))}}
- \newcommand{\CADD}[2]{\LP\key{+}~#1~#2\RP}
- \newcommand{\CMUL}[2]{\LP\key{*}~#1~#2\RP}
- \newcommand{\SUB}[2]{\key{(Prim}\;\code{-}\;\code{(}#1\;#2\code{))}}
- \newcommand{\CSUB}[2]{\LP\key{-}~#1~#2\RP}
- \newcommand{\CWHILE}[2]{\LP\key{while}~#1~#2\RP}
- \newcommand{\WHILE}[2]{\LP\key{WhileLoop}~#1~#2\RP}
- \newcommand{\CBEGIN}[2]{\LP\key{begin}~#1~#2\RP}
- \newcommand{\CMAKEVEC}[2]{\LP\key{make-vector}~#1~#2\RP}
- \newcommand{\BEGIN}[2]{\LP\key{Begin}~#1~#2\RP}
- \newcommand{\CSETBANG}[2]{\LP\key{set!}~#1~#2\RP}
- \newcommand{\SETBANG}[2]{\LP\key{SetBang}~#1~#2\RP}
- \newcommand{\AND}[2]{\key{(Prim}\;\code{and}\;\code{(}#1\;#2\code{))}}
- \newcommand{\OR}[2]{\key{(Prim}\;\code{or}\;\code{(}#1\;#2\code{))}}
- \newcommand{\NOT}[1]{\key{(Prim}\;\code{not}\;\code{(}#1\;\code{))}}
- \newcommand{\UNIOP}[2]{\key{(Prim}\;#1\;\code{(}#2\code{))}}
- \newcommand{\CUNIOP}[2]{\LP #1\;#2 \RP}
- \newcommand{\BINOP}[3]{\key{(Prim}\;#1\;\code{(}#2\;#3\code{))}}
- \newcommand{\CBINOP}[3]{\LP #1\;#2\;#3\RP}
- \newcommand{\CLET}[3]{\LP\key{let}~\LP\LS#1~#2\RS\RP~#3\RP}
- \newcommand{\CIF}[3]{\LP\key{if}~#1~#2~#3\RP}
- \newcommand{\VAR}[1]{\key{(Var}\;#1\key{)}}
- \newcommand{\LET}[3]{\key{(Let}~#1~#2~#3\key{)}}
- \newcommand{\IF}[3]{\key{(If}\,#1\;#2\;#3\key{)}}
- \newcommand{\CAST}[3]{\LP\key{Cast}~#1~#2~#3\RP}
- \newcommand{\VECTOR}[1]{\LP\key{Prim}\;\code{vector}\;\LP\;#1\RP\RP}
- \newcommand{\VECREF}[2]{\LP\key{Prim}\;\code{vector-ref}\;\LP\;#1\;#2\RP\RP}
- \newcommand{\VECSET}[3]{\LP\key{Prim}\;\code{vector-set!}\;\LP\;#1\;#2\;#3\RP\RP}
- \newcommand{\VECLEN}[1]{\LP\key{Prim}\;\code{vector-length}\;\LP\;#1\RP\RP}
- \newcommand{\ANYVECREF}[2]{\LP\key{Prim}\;\code{any-vector-ref}\;\LP\;#1\;#2\RP\RP}
- \newcommand{\ANYVECSET}[3]{\LP\key{Prim}\;\code{any-vector-set!}\;\LP\;#1\;#2\;#3\RP\RP}
- \newcommand{\ANYVECLEN}[1]{\LP\key{Prim}\;\code{any-vector-length}\;\LP\;#1\RP\RP}
- \newcommand{\CLOSURE}[2]{\LP\key{Closure}~#1~#2\RP}
- \newcommand{\ALLOC}[2]{\LP\key{Allocate}~#1~#2\RP}
- \newcommand{\ALLOCCLOS}[3]{\LP\key{AllocateClosure}~#1~#2~#3\RP}
- \newcommand{\VOID}[1]{\key{(Void)}}
- \newcommand{\APPLY}[2]{\key{(Apply}\;#1\;#2\code{)}}
- \newcommand{\CALL}[2]{\key{(Call}\;#1\;#2\code{)}}
- \newcommand{\TAILCALL}[2]{\key{(TailCall}\;#1\;#2\code{)}}
- \newcommand{\FUNDEF}[5]{\key{(Def}~#1~#2~#3~#4~#5\code{)}}
- \newcommand{\FUNREF}[1]{\key{(FunRef}\;#1\code{)}}
- \newcommand{\CFUNREF}[1]{\key{(fun-ref}\;#1\code{)}}
- \newcommand{\FUNREFARITY}[2]{\key{(FunRefArity}~#1~#2\code{)}}
- \newcommand{\CFUNREFARITY}[2]{\key{(fun-ref-arity}~#1~#2\code{)}}
- \newcommand{\LAMBDA}[3]{\key{(Lambda}~#1~#2~#3\code{)}}
- \newcommand{\CLAMBDA}[3]{\LP\key{lambda:}\,#1\,\key{:}\,#2\;\Exp\RP}
- \newcommand{\CGLAMBDA}[3]{\LP\key{lambda:}\,#1\,#2\;\Exp\RP}
- \newcommand{\INJECT}[2]{\LP\key{Inject}~#1~#2\RP}
- \newcommand{\PROJECT}[2]{\LP\key{Project}~#1~#2\RP}
- \newcommand{\CINJECT}[2]{\LP\key{inject}~#1~#2\RP}
- \newcommand{\CPROJECT}[2]{\LP\key{project}~#1~#2\RP}
- \newcommand{\VALUEOF}[2]{\LP\key{ValueOf}~#1~#2\RP}
- \newcommand{\ASSIGN}[2]{\key{(Assign}~#1\;#2\key{)}}
- \newcommand{\RETURN}[1]{\key{(Return}~#1\key{)}}
- \newcommand{\SEQ}[2]{\key{(Seq}~#1~#2\key{)}}
- \newcommand{\GOTO}[1]{\key{(Goto}~#1\key{)}}
- \newcommand{\IFSTMT}[3]{\key{(IfStmt}\,#1\;#2\;#3\key{)}}
- \newcommand{\IMM}[1]{\key{(Imm}\;#1\key{)}}
- \newcommand{\REG}[1]{\key{(Reg}\;#1\key{)}}
- \newcommand{\BYTEREG}[1]{\key{(ByteReg}\;#1\key{)}}
- \newcommand{\DEREF}[2]{\key{(Deref}~#1~#2\key{)}}
- \newcommand{\DEF}[5]{\LP\key{Def}~#1~#2~#3~#4~#5\RP}
- \newcommand{\CDEF}[4]{\LP\key{define}~\LP#1~#2\RP\,\key{:}\,#3~#4\RP}
- \newcommand{\CGDEF}[4]{\LP\key{define}~\LP#1~#2\RP\,#3~#4\RP}
- \newcommand{\DECL}[2]{\LP\key{Decl}~#1~#2\RP}
- \newcommand{\INST}[3]{\LP\key{Inst}~#1~#2~#3\RP}
- \newcommand{\CFG}[1]{\key{(CFG}\;#1\key{)}}
- \newcommand{\BLOCK}[2]{\key{(Block}\;#1\;#2\key{)}}
- \newcommand{\STACKLOC}[1]{(\key{stack}\;#1)}
- \newcommand{\BININSTR}[3]{\key{(Instr}\;#1\;\key{(}\;#2\;#3\key{))}}
- \newcommand{\UNIINSTR}[2]{\key{(Instr}\;#1\;\key{(}\;#2\key{))}}
- \newcommand{\CALLQ}[2]{\key{(Callq}~#1~#2\key{)}}
- \newcommand{\INDCALLQ}[2]{\key{(IndirectCallq}~#1~#2\key{)}}
- \newcommand{\RETQ}{\key{(Retq)}}
- \newcommand{\PUSHQ}[1]{\key{(Pushq}~#1\key{)}}
- \newcommand{\POPQ}[1]{\key{(Popq}~#1\key{)}}
- \newcommand{\JMP}[1]{\key{(Jmp}~#1\key{)}}
- \newcommand{\TAILJMP}[2]{\key{(TailJmp}~#1~#2\key{)}}
- \newcommand{\JMPIF}[2]{\key{(JmpIf}~#1~#2\key{)}}
- \newcommand{\TTKEY}[1]{{\normalfont\tt #1}}
|