Giter VIP home page Giter VIP logo

nanopass's Introduction

Nanopass scheme compiler in scheme for x86

This is a scheme compiler for my study. It runs on macOS only.

Compile fib step by step

$ gosh
gosh> (load "./compiler.scm")
gosh> (x86
        (cg-top
          (code-generation-form
            (immediate-literal-form
              (assignmentless-form
                (analyzed-form
                  (beta-reduce
                    (cps-form
                      (core-form
                        (local-form
                          (macroless-form
                            (append-library
                              '(letrec ((fib (lambda (n)
                                               (if (= n 0)
                                                   n
                                                   (if (= n 1)
                                                       n
                                                       (+ (fib (- n 1)) (fib (- n 2))))))))
                                 (fib 35))))))))))))))
$ ./a.out
9227465

Run sample

$ ./run samples/tinyrenderer.scm
$ open output.tga

Run test

$ ./runtests

References

  1. Summer Scheme Workshop; Compiling Scheme, http://www.cs.indiana.edu/eip/compile/
  2. Ur-Scheme, http://www.canonical.org/~kragen/sw/urscheme/
  3. An Incremental Approach to Compiler Construction, http://schemeworkshop.org/2006/11-ghuloum.pdf
  4. The 90 Minute Scheme to C compiler, http://churchturing.org/y/90-min-scc.pdf
  5. scheme -> LLVM, https://web.archive.org/web/20100121052131/http://www.ida.liu.se/~tobnu/scheme2llvm
  6. LYSP — 50 Years of Symbolic Processing, http://piumarta.com/software/lysp/
  7. 非決定的計算オペレータ amb の並列化, http://www.principia-m.com/ts/0127/index-jp.html
  8. Tiny Renderer or how OpenGL works: software rendering in 500 lines of code, https://github.com/ssloy/tinyrenderer

nanopass's People

Contributors

nobutaka avatar

Watchers

James Cloos avatar Asilo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.