# Usage ``` $ git clone git clone https://github.com/thata/min-caml-aarch64.git $ cd min-caml-aarch64 $ ./to_aarch64 $ make min-caml $ ./min-caml test/fib $ gcc test/fib.s libmincaml.S stub.c -o test/fib $ ./test/rib 832040 ``` ## Raytracer ``` cd min-rt/ ; make min-rt.min-caml ; ./min-rt.min-caml < contest.sld > contest.ppm ``` # Original README An educational compiler for a minimal subset of OCaml, written in ~2000 lines of OCaml. For details, see: http://esumii.github.io/min-caml/ (Japanese Web page) http://esumii.github.io/min-caml/jpaper.pdf (Japanese academic paper) http://esumii.github.io/min-caml/index-e.html (English Web page) http://esumii.github.io/min-caml/paper.pdf (English academic paper) 1. Install OCaml (http://caml.inria.fr/) if you haven't 2. Download (and expand) MinCaml, e.g. git clone git clone https://github.com/thata/min-caml-aarch64.git 3. cd min-caml/ 4. Execute ./to_aarch64 for Apple M1(AArch64) (or ./to_sparc for SPARC, ./to_ppc for PowerPC) 5. make 6. If you like, try the ray tracer cd min-rt/ ; make min-rt.min-caml ; ./min-rt.min-caml < contest.sld > contest.ppm though it takes time because of OCaml bytecode (for testing by comparison), not MinCaml [FAQ 1] Is there an x86_64 version? [A] There is, but it is left as an exercise for students and _not_ included in this distribution. [FAQ 2] Is there a version that emits C code? [A] See above. [Updates on October 9, 2013] - Moved from SourceForge https://sourceforge.net/p/min-caml/code/ to GitHub https://github.com/esumii/min-caml - Merged the Mac OS patch by shinh https://twitter.com/shinh/status/322043108021907458 [Update on July 24, 2012] - 32-bit x86 (with SSE2, that is, Pentium IV or later) is now supported (on Linux and Cygwin); execute ./to_x86 before make. [Updates on September 17, 2008] - PowerPC is now supported (in addition to SPARC), thanks to Ms. Masuko and Prof. Asai in Ochanomizu University. You _must_ execute either ./to_ppc or ./to_sparc _before_ make. - The register allocator now uses a simpler algorithm. It omits the backtracking (ToSpill and NoSpill) in previous versions.