From a4117e6867f5e4ab77a0a7dbc902bdae40826be9 Mon Sep 17 00:00:00 2001 From: dvanhorn Date: Wed, 29 Oct 2025 04:08:48 +0000 Subject: [PATCH] crook --- dupe-plus-plus/compile.rkt | 3 +-- dupe-plus/compile.rkt | 3 +-- extort-plus/compile-ops.rkt | 7 ++++--- extort-plus/compile.rkt | 11 +++-------- fraud-plus/compile-ops.rkt | 7 ++++--- fraud-plus/compile.rkt | 11 +++-------- hoax-plus/compile-ops.rkt | 7 ++++--- hoax-plus/compile.rkt | 14 ++++---------- iniquity-plus/compile-ops.rkt | 7 ++++--- iniquity-plus/compile.rkt | 17 +++++------------ knock-plus/compile-ops.rkt | 7 ++++--- knock-plus/compile.rkt | 17 +++++------------ 12 files changed, 42 insertions(+), 69 deletions(-) diff --git a/dupe-plus-plus/compile.rkt b/dupe-plus-plus/compile.rkt index c38c1ae..e42004d 100644 --- a/dupe-plus-plus/compile.rkt +++ b/dupe-plus-plus/compile.rkt @@ -19,8 +19,7 @@ (match e [(Lit d) (compile-datum d)] [(Prim1 p e) (compile-prim1 p e)] - [(If e1 e2 e3) - (compile-if e1 e2 e3)] + [(If e1 e2 e3) (compile-if e1 e2 e3)] [(Cond eqs eas el) ;; TODO (seq)] [(Case e ds es el) ;; TODO diff --git a/dupe-plus/compile.rkt b/dupe-plus/compile.rkt index f5362c3..c90abe2 100644 --- a/dupe-plus/compile.rkt +++ b/dupe-plus/compile.rkt @@ -19,8 +19,7 @@ (match e [(Lit d) (compile-datum d)] [(Prim1 p e) (compile-prim1 p e)] - [(If e1 e2 e3) - (compile-if e1 e2 e3)] + [(If e1 e2 e3) (compile-if e1 e2 e3)] [(Cond eqs eas el) ;; TODO (seq)])) diff --git a/extort-plus/compile-ops.rkt b/extort-plus/compile-ops.rkt index c34057c..878657d 100644 --- a/extort-plus/compile-ops.rkt +++ b/extort-plus/compile-ops.rkt @@ -9,8 +9,8 @@ (define (compile-op0 p) (match p ['void (seq (Mov rax (value->bits (void))))] - ['read-byte (seq (Call 'read_byte))] - ['peek-byte (seq (Call 'peek_byte))])) + ['read-byte (seq (Extern 'read_byte) (Call 'read_byte))] + ['peek-byte (seq (Extern 'peek_byte) (Call 'peek_byte))])) ;; Op1 -> Asm (define (compile-op1 p) @@ -51,7 +51,8 @@ (seq (Cmp rax (value->bits eof)) if-equal)] ['write-byte - (seq (assert-byte rax) + (seq (Extern 'write_byte) + (assert-byte rax) (Mov rdi rax) (Call 'write_byte))])) diff --git a/extort-plus/compile.rkt b/extort-plus/compile.rkt index c7bc1d5..e122144 100644 --- a/extort-plus/compile.rkt +++ b/extort-plus/compile.rkt @@ -10,10 +10,6 @@ ;; Expr -> Asm (define (compile e) (prog (Global 'entry) - (Extern 'peek_byte) - (Extern 'read_byte) - (Extern 'write_byte) - (Extern 'raise_error) (Label 'entry) (Sub rsp 8) (compile-e e) @@ -21,6 +17,7 @@ (Ret) ;; Error handler (Label 'err) + (Extern 'raise_error) (Call 'raise_error))) ;; Expr -> Asm @@ -30,14 +27,12 @@ [(Eof) (seq (Mov rax (value->bits eof)))] [(Prim0 p) (compile-prim0 p)] [(Prim1 p e) (compile-prim1 p e)] - [(If e1 e2 e3) - (compile-if e1 e2 e3)] + [(If e1 e2 e3) (compile-if e1 e2 e3)] [(Cond eqs eas el) ;; TODO (seq)] [(Case e ds es el) ;; TODO (seq)] - [(Begin e1 e2) - (compile-begin e1 e2)])) + [(Begin e1 e2) (compile-begin e1 e2)])) ;; Datum -> Asm (define (compile-datum d) diff --git a/fraud-plus/compile-ops.rkt b/fraud-plus/compile-ops.rkt index e8f31c1..099c04b 100644 --- a/fraud-plus/compile-ops.rkt +++ b/fraud-plus/compile-ops.rkt @@ -9,8 +9,8 @@ (define (compile-op0 p) (match p ['void (seq (Mov rax (value->bits (void))))] - ['read-byte (seq pad-stack (Call 'read_byte) unpad-stack)] - ['peek-byte (seq pad-stack (Call 'peek_byte) unpad-stack)])) + ['read-byte (seq (Extern 'read_byte) pad-stack (Call 'read_byte) unpad-stack)] + ['peek-byte (seq (Extern 'peek_byte) pad-stack (Call 'peek_byte) unpad-stack)])) ;; Op1 -> Asm (define (compile-op1 p) @@ -57,7 +57,8 @@ (seq (Cmp rax (value->bits eof)) if-equal)] ['write-byte - (seq (assert-byte rax) + (seq (Extern 'write_byte) + (assert-byte rax) pad-stack (Mov rdi rax) (Call 'write_byte) diff --git a/fraud-plus/compile.rkt b/fraud-plus/compile.rkt index 4587980..32214b9 100644 --- a/fraud-plus/compile.rkt +++ b/fraud-plus/compile.rkt @@ -9,10 +9,6 @@ ;; ClosedExpr -> Asm (define (compile e) (prog (Global 'entry) - (Extern 'peek_byte) - (Extern 'read_byte) - (Extern 'write_byte) - (Extern 'raise_error) (Label 'entry) ;; save callee-saved register (Push r15) @@ -23,6 +19,7 @@ ;; Error handler (Label 'err) pad-stack + (Extern 'raise_error) (Call 'raise_error))) ;; type CEnv = (Listof [Maybe Id]) @@ -35,8 +32,7 @@ [(Prim0 p) (compile-prim0 p)] [(Prim1 p e) (compile-prim1 p e c)] [(Prim2 p e1 e2) (compile-prim2 p e1 e2 c)] - [(If e1 e2 e3) - (compile-if e1 e2 e3 c)] + [(If e1 e2 e3) (compile-if e1 e2 e3 c)] [(Cond eqs eas el) ;; TODO (seq)] [(Case e ds es el) ;; TODO @@ -49,8 +45,7 @@ ;; TODO: this works for special case of single binding ;; TODO: revise to work for any number of bindings (compile-let1 x e1 e c)] - [(Begin e1 e2) - (compile-begin e1 e2 c)])) + [(Begin e1 e2) (compile-begin e1 e2 c)])) ;; Datum -> Asm (define (compile-datum d) diff --git a/hoax-plus/compile-ops.rkt b/hoax-plus/compile-ops.rkt index a3dfc75..2b02cd4 100644 --- a/hoax-plus/compile-ops.rkt +++ b/hoax-plus/compile-ops.rkt @@ -9,8 +9,8 @@ (define (compile-op0 p) (match p ['void (seq (Mov rax (value->bits (void))))] - ['read-byte (seq pad-stack (Call 'read_byte) unpad-stack)] - ['peek-byte (seq pad-stack (Call 'peek_byte) unpad-stack)])) + ['read-byte (seq (Extern 'read_byte) pad-stack (Call 'read_byte) unpad-stack)] + ['peek-byte (seq (Extern 'peek_byte) pad-stack (Call 'peek_byte) unpad-stack)])) ;; Op1 -> Asm (define (compile-op1 p) @@ -42,7 +42,8 @@ (seq (Cmp rax (value->bits eof)) if-equal)] ['write-byte - (seq (assert-byte rax) + (seq (Extern 'write_byte) + (assert-byte rax) pad-stack (Mov rdi rax) (Call 'write_byte) diff --git a/hoax-plus/compile.rkt b/hoax-plus/compile.rkt index 843a58a..6b1b86f 100644 --- a/hoax-plus/compile.rkt +++ b/hoax-plus/compile.rkt @@ -9,10 +9,6 @@ ;; ClosedExpr -> Asm (define (compile e) (prog (Global 'entry) - (Extern 'peek_byte) - (Extern 'read_byte) - (Extern 'write_byte) - (Extern 'raise_error) (Label 'entry) ;; save callee-saved register (Push r15) @@ -27,6 +23,7 @@ ;; Error handler (Label 'err) pad-stack + (Extern 'raise_error) (Call 'raise_error) (Data) (Label 'empty) @@ -43,12 +40,9 @@ [(Prim1 p e) (compile-prim1 p e c)] [(Prim2 p e1 e2) (compile-prim2 p e1 e2 c)] [(Prim3 p e1 e2 e3) (compile-prim3 p e1 e2 e3 c)] - [(If e1 e2 e3) - (compile-if e1 e2 e3 c)] - [(Begin e1 e2) - (compile-begin e1 e2 c)] - [(Let x e1 e2) - (compile-let x e1 e2 c)])) + [(If e1 e2 e3) (compile-if e1 e2 e3 c)] + [(Begin e1 e2) (compile-begin e1 e2 c)] + [(Let x e1 e2) (compile-let x e1 e2 c)])) ;; Datum -> Asm (define (compile-datum d) diff --git a/iniquity-plus/compile-ops.rkt b/iniquity-plus/compile-ops.rkt index 7505275..25ed45c 100644 --- a/iniquity-plus/compile-ops.rkt +++ b/iniquity-plus/compile-ops.rkt @@ -9,8 +9,8 @@ (define (compile-op0 p) (match p ['void (seq (Mov rax (value->bits (void))))] - ['read-byte (seq pad-stack (Call 'read_byte) unpad-stack)] - ['peek-byte (seq pad-stack (Call 'peek_byte) unpad-stack)])) + ['read-byte (seq (Extern 'read_byte) pad-stack (Call 'read_byte) unpad-stack)] + ['peek-byte (seq (Extern 'peek_byte) pad-stack (Call 'peek_byte) unpad-stack)])) ;; Op1 -> Asm (define (compile-op1 p) @@ -42,7 +42,8 @@ (seq (Cmp rax (value->bits eof)) if-equal)] ['write-byte - (seq (assert-byte rax) + (seq (Extern 'write_byte) + (assert-byte rax) pad-stack (Mov rdi rax) (Call 'write_byte) diff --git a/iniquity-plus/compile.rkt b/iniquity-plus/compile.rkt index b21120f..ae05bf5 100644 --- a/iniquity-plus/compile.rkt +++ b/iniquity-plus/compile.rkt @@ -14,10 +14,6 @@ (match p [(Prog ds e) (prog (Global 'entry) - (Extern 'peek_byte) - (Extern 'read_byte) - (Extern 'write_byte) - (Extern 'raise_error) (Label 'entry) (Push rbx) ; save callee-saved register (Push r15) @@ -30,6 +26,7 @@ (compile-defines ds) (Label 'err) pad-stack + (Extern 'raise_error) (Call 'raise_error) (Data) (Label 'empty) @@ -74,14 +71,10 @@ [(Prim1 p e) (compile-prim1 p e c)] [(Prim2 p e1 e2) (compile-prim2 p e1 e2 c)] [(Prim3 p e1 e2 e3) (compile-prim3 p e1 e2 e3 c)] - [(If e1 e2 e3) - (compile-if e1 e2 e3 c)] - [(Begin e1 e2) - (compile-begin e1 e2 c)] - [(Let x e1 e2) - (compile-let x e1 e2 c)] - [(App f es) - (compile-app f es c)] + [(If e1 e2 e3) (compile-if e1 e2 e3 c)] + [(Begin e1 e2) (compile-begin e1 e2 c)] + [(Let x e1 e2) (compile-let x e1 e2 c)] + [(App f es) (compile-app f es c)] [(Apply f es e) (compile-apply f es e c)])) diff --git a/knock-plus/compile-ops.rkt b/knock-plus/compile-ops.rkt index c95d016..a31fd6f 100644 --- a/knock-plus/compile-ops.rkt +++ b/knock-plus/compile-ops.rkt @@ -9,8 +9,8 @@ (define (compile-op0 p) (match p ['void (seq (Mov rax (value->bits (void))))] - ['read-byte (seq pad-stack (Call 'read_byte) unpad-stack)] - ['peek-byte (seq pad-stack (Call 'peek_byte) unpad-stack)])) + ['read-byte (seq (Extern 'read_byte) pad-stack (Call 'read_byte) unpad-stack)] + ['peek-byte (seq (Extern 'peek_byte) pad-stack (Call 'peek_byte) unpad-stack)])) ;; Op1 -> Asm (define (compile-op1 p) @@ -42,7 +42,8 @@ (seq (Cmp rax (value->bits eof)) if-equal)] ['write-byte - (seq (assert-byte rax) + (seq (Extern 'write_byte) + (assert-byte rax) pad-stack (Mov rdi rax) (Call 'write_byte) diff --git a/knock-plus/compile.rkt b/knock-plus/compile.rkt index e5404cb..8b732af 100644 --- a/knock-plus/compile.rkt +++ b/knock-plus/compile.rkt @@ -16,10 +16,6 @@ (match p [(Prog ds e) (prog (Global 'entry) - (Extern 'peek_byte) - (Extern 'read_byte) - (Extern 'write_byte) - (Extern 'raise_error) (Label 'entry) (Push rbx) ; save callee-saved register (Push r15) @@ -32,6 +28,7 @@ (compile-defines ds) (Label 'err) pad-stack + (Extern 'raise_error) (Call 'raise_error) (Data) (Label 'empty) @@ -66,14 +63,10 @@ [(Prim2 p e1 e2) (compile-prim2 p e1 e2 c)] [(Prim3 p e1 e2 e3) (compile-prim3 p e1 e2 e3 c)] [(PrimN p es) (compile-primN p es c)] - [(If e1 e2 e3) - (compile-if e1 e2 e3 c t?)] - [(Begin e1 e2) - (compile-begin e1 e2 c t?)] - [(Let x e1 e2) - (compile-let x e1 e2 c t?)] - [(App f es) - (compile-app f es c t?)] + [(If e1 e2 e3) (compile-if e1 e2 e3 c t?)] + [(Begin e1 e2) (compile-begin e1 e2 c t?)] + [(Let x e1 e2) (compile-let x e1 e2 c t?)] + [(App f es) (compile-app f es c t?)] [(Match e ps es) (compile-match e ps es c t?)])) ;; Datum -> Asm