Created
September 26, 2019 06:26
-
-
Save cmonkey/d559f76fb6e25139bfc031ffb7d21655 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#lang typed/racket | |
(require x64asm) | |
(define-cast ->int | |
#:type (-> Integer) | |
#:ctype (_fun -> _int)) | |
(define-λ! get-1000 ->int | |
(mov rax (imm32 1000)) | |
(ret)) | |
(get-1000) | |
(define-cast int->int | |
#:type (Integer -> Integer) | |
#:ctype (_fun _int64 -> _int64)) | |
(define-λ! fib int->int #:labels (start l1 l2 l3) | |
(define arg0 (if (eq? (system-type )'windows) rcx rdi)) | |
(:! start) | |
(push rbp) | |
(mov rbp rsp) | |
(sub rsp (imm8 16)) | |
(cmp arg0 (imm8 2)) | |
(jg (rel8 l1)) | |
(mov rax (imm32 1)) | |
(leave) | |
(ret) | |
(:! l1) | |
(sub arg0 (imm8 1)) | |
(mov (mref 64 rbp - 8 ) arg0) | |
(call (rel32 start)) | |
(mov (mref 64 rbp - 16) rax) | |
(mov arg0 (mref 64 rbp - 8)) | |
(sub arg0 (imm8 1)) | |
(call (rel32 start)) | |
(add rax (mref 64 rbp - 16)) | |
(leave) | |
(ret) | |
) | |
(fib 40) | |
(define-cast dd->d | |
#:type (Flonum Flonum -> Flonum) | |
#:ctype (_fun _double _double -> _double)) | |
(define my-fl* | |
(parameterize ([current-context (make-context)]) | |
(define entry (label)) | |
(:! entry) | |
(addsd xmm0 xmm1) | |
(ret) | |
(emit-code!) | |
(dd->d (label-addr entry)) | |
)) | |
(my-fl* 100.0 200.0) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment