Compare commits
3 Commits
df520e99ca
...
70295d0dcf
| Author | SHA1 | Date |
|---|---|---|
|
|
70295d0dcf | |
|
|
69f969bb71 | |
|
|
ad82c64d4d |
|
|
@ -0,0 +1,5 @@
|
||||||
|
.global _main
|
||||||
|
|
||||||
|
_main:
|
||||||
|
mov x0, 42 // exit code
|
||||||
|
ret
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#lang racket
|
#lang racket
|
||||||
|
|
||||||
(require "uniquify.scm")
|
(require "uniquify.rkt")
|
||||||
|
|
||||||
(provide remove-complex-opera*)
|
(provide remove-complex-opera*)
|
||||||
|
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
.global main
|
||||||
|
main:
|
||||||
|
bl _main
|
||||||
|
mov x8, 93 // sys_exit() is at index 93 in kernel functions table
|
||||||
|
svc #0 // generate kernel call sys_exit(123);
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
#lang racket
|
||||||
|
|
||||||
|
(require "test-util.rkt")
|
||||||
|
|
||||||
|
(test-eq
|
||||||
|
(compile-arm-asm "aarch64-hello.s" "a.out")
|
||||||
|
#t)
|
||||||
|
|
||||||
|
(test-eq
|
||||||
|
(run-arm-executable "a.out")
|
||||||
|
42)
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#lang racket
|
#lang racket
|
||||||
|
|
||||||
(require "test-util.scm")
|
(require "test-util.rkt")
|
||||||
(require "c2.scm")
|
(require "c2.rkt")
|
||||||
|
|
||||||
(test-eq (env-head-value `((a 1))) 1)
|
(test-eq (env-head-value `((a 1))) 1)
|
||||||
(test-eq (env-head-symbol `((a 1))) `a)
|
(test-eq (env-head-symbol `((a 1))) `a)
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
#lang racket
|
#lang racket
|
||||||
|
|
||||||
(require "test-util.scm")
|
(require "test-util.rkt")
|
||||||
(require "remove-complex-oper.scm")
|
(require "remove-complex-oper.rkt")
|
||||||
(require "explicate-control.scm")
|
(require "explicate-control.rkt")
|
||||||
(require "c2.scm")
|
(require "c2.rkt")
|
||||||
|
|
||||||
(define programs
|
(define programs
|
||||||
(list
|
(list
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
#lang racket
|
#lang racket
|
||||||
|
|
||||||
(require "test-util.scm")
|
(require "test-util.rkt")
|
||||||
(require "remove-complex-oper.scm")
|
(require "remove-complex-oper.rkt")
|
||||||
(require "c2.scm")
|
(require "c2.rkt")
|
||||||
|
|
||||||
(define programs
|
(define programs
|
||||||
(list
|
(list
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
(let ([y (let ([x 20])
|
(let ([y (let ([x 20])
|
||||||
(+ x (let ([x 22]) x)))]) y))))
|
(+ x (let ([x 22]) x)))]) y))))
|
||||||
|
|
||||||
(for/list ([program programs] [env (build-list (length programs) (lambda (_) '()))])
|
(for ([program programs] [env (build-list (length programs) (lambda (_) '()))])
|
||||||
(test-eq ((interp-R1 env) program)
|
(test-eq ((interp-R1 env) program)
|
||||||
((interp-R1 env) (remove-complex-opera* program))))
|
((interp-R1 env) (remove-complex-opera* program))))
|
||||||
|
|
||||||
|
|
@ -95,5 +95,3 @@
|
||||||
(test-eq
|
(test-eq
|
||||||
(remove-complex-opera* (list-ref programs 12))
|
(remove-complex-opera* (list-ref programs 12))
|
||||||
`(program () (let ((y.1 (let ((x.1 20)) (let ((x.2 22)) (+ x.1 x.2))))) y.1)))
|
`(program () (let ((y.1 (let ((x.1 20)) (let ((x.2 22)) (+ x.1 x.2))))) y.1)))
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#lang racket
|
#lang racket
|
||||||
|
|
||||||
(require "uncover-locals.scm")
|
(require "uncover-locals.rkt")
|
||||||
(require "test-util.scm")
|
(require "test-util.rkt")
|
||||||
|
|
||||||
(define programs
|
(define programs
|
||||||
(list
|
(list
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
#lang racket
|
#lang racket
|
||||||
|
|
||||||
(require "test-util.scm")
|
(require "test-util.rkt")
|
||||||
(require "uniquify.scm")
|
(require "uniquify.rkt")
|
||||||
(require "c2.scm")
|
(require "c2.rkt")
|
||||||
|
|
||||||
(test-eq ((uniquify-exp (make-immutable-hash) (make-immutable-hash)) `(read))
|
(test-eq ((uniquify-exp (make-immutable-hash) (make-immutable-hash)) `(read))
|
||||||
`(#hash() (read)))
|
`(#hash() (read)))
|
||||||
|
|
@ -67,7 +67,6 @@
|
||||||
(+ x y))))
|
(+ x y))))
|
||||||
(define env2 '((y 5)))
|
(define env2 '((y 5)))
|
||||||
|
|
||||||
(for/list ([program (list p1 p2)] [env (list env1 env2)])
|
(for ([program (list p1 p2)] [env (list env1 env2)])
|
||||||
(test-eq ((interp-R1 env) program)
|
(test-eq ((interp-R1 env) program)
|
||||||
((interp-R1 env) (cadr (uniquify program)))))
|
((interp-R1 env) (cadr (uniquify program)))))
|
||||||
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
#lang racket
|
||||||
|
|
||||||
|
(require racket/system)
|
||||||
|
|
||||||
|
(provide test-eq compile-arm-asm run-arm-executable)
|
||||||
|
|
||||||
|
(define (test-eq a b)
|
||||||
|
(if (equal? a b) (displayln "PASS") (error (format "FAIL: ~a != ~a" a b))))
|
||||||
|
|
||||||
|
(define (compile-arm-asm filename outfilename)
|
||||||
|
(system (format "aarch64-linux-gnu-gcc -static ~a runtime.s -o ~a" filename outfilename)))
|
||||||
|
|
||||||
|
(define (run-arm-executable filename)
|
||||||
|
(system/exit-code (format "qemu-aarch64 ./~a" filename)))
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
#lang racket
|
|
||||||
|
|
||||||
(provide test-eq ppexp)
|
|
||||||
|
|
||||||
(define (test-eq a b)
|
|
||||||
(if (equal? a b) #t (error "assert failed: " a " != " b)))
|
|
||||||
|
|
||||||
(define (ppexp exp) (begin (print exp) (newline)))
|
|
||||||
Loading…
Reference in New Issue