Assemblers, Linkers and Object Module Librarians
  • VASM - VASM is an assembler for a wide variety of CPUs.
  • YASM - YASM, a rewrite of the NASM assember (also listed on this page), supports the Intel x86 and AMD64 instruction sets.
  • NASM - This is a free macro assembler that assembles Intel x86 assembly code. It generates a wide range of object file formats, including a.out, ELF, COFF, Mach-0, Microsoft OBJ, etc.
  • MASM - Microsoft Macro-Assembler, or MASM, is now available for non-commercial use.
BASIC Compilers and Interpreters
  • SDLBasic - SDLBasic is a BASIC interpreter that integrates the WxBasic interpreter, the SDL graphics library and a graphics engine, so that you can use it to write 2D games in BASIC.
  • BaCon BASIC - BaCon BASIC is a BASIC to C translator for Unix-based systems (like Linux, FreeBSD, Mac OS X, etc), which means that it takes your BASIC code and changes it into C source code.
  • Vintage BASIC - Vintage BASIC is an interpreter with a language that is close to Microsoft's BASIC version 2 as found in the Commodore 64.
C/C++ Compilers
  • Tiny C Fork - This is a fork of the Tiny C compiler that is distributed in source form. Like the original Tiny C compiler, it implements many features of the ISO C99 standard.
  • AsmJIT - Complete x86/x64 JIT and Remote Assembler for C++.
  • GCC - The GNU Compiler Collection (C as a Backend).
  • LCC - The lcc retargetable ANSI C compiler (C as a Backend).
  • libFirm - C-library that provides a graph-based intermediate representation, optimizations, and assembly code generation suitable for use in compilers.
  • libJIT - Library for generic Just-In-Time compiler functionality independent of any particular bytecode, language, or runtime.
  • myJIT - Library for machine-code generation and execution at run-time.
  • OrangeC - Win32 C11/C++2014 compiler and toolchain.
  • PCC - The Portable C Compiler (C as a Backend).
  • Ragel - Ragel State Machine Compiler.
  • TCC - The Tiny C Compiler (C as a Backend).
JVM
  • ANTLR - Parser generator for reading, processing, executing, or translating structured text or binary files.
  • BYAAC/J - BYACC/Java is an extension of the Berkeley v 1.8 YACC-compatible parser generator for Java.
  • CGLIB - High level API library for generating and transforming Java Byte Code.
  • FCP JVM - JVM Backend for generating Java Byte Code that conforms to the JDK v1.5+ Specification and the Dalvik VM.
  • JavaCC - Java Compiler Construction and Parser Generator Toolkit.
  • JavaCPP Presets for LLVM - Library for easily interacting with the LLVM API.
  • JFlex - JFlex is a lexical analyzer generator for Java with full Unicode support.
  • JLex - JLex is a lexical analyzer generator, that can be used in combination with CUP.
Language Agnostic
  • B3: The Bare Bones Backend - WebKit's optimizing JIT Compiler for procedures containing C-like code.
  • Capstone - Lightweight multi-platform, multi-architecture disassembly framework with bindings to various famous programming languages.
  • Keystone - Lightweight multi-platform, multi-architecture assembler framework with bindings to various famous programming languages.
  • LLILCL - LLVM-based Compiler Backend for .NET Core.
  • LLVM - The LLVM Compiler-Backend Framework.
  • MicroVM - The “Mu” Framewrok for Programming Languages development based on the MuVM Specification.
  • Movfuscator Compiler - The M/o/Vfuscator compiles programs into “mov” instructions, and only “mov” instructions.
  • QBE: The Quick Backend - Pure C embeddable SSA-based compiler backend.
  • Rubinius - Programming Languages Development Platform.
  • Summus - Basic, reusable, compiler-frontend implementation using LLVM as a backend.
  • ZetaVM - Multi-Language Platform for Dynamic Programming Languages.
Educational and Toy Projects
  • Akilang - A compiler for a simple language, built with Python and LLVM
  • amacc - Small C Compiler generating ELF executable for Arm architecture.
  • Black - Scheme interpreter for the Reflective Programming Language “Black”, by Kenichi Asai's.
  • C4 - C Lang in 4 Functions.
  • CarpVM - Experimental VM implementation in C.
  • Charly - Interpreter for a dynamically typed language written in Crystal.
  • Dale - Lisp-flavoured C: a system programming language.
  • EasyLang - Easy Programming Language / VM.
  • Eschelle - Open source cross platform multi-paradigm language with VM & JIT
  • Gecho - Simple-stack language implementation in C.
  • gocaml - Minimal functional programming language implementation in Go and LLVM.
  • gone - Compiler for a tiny programming language called Gone, implemented using Python 3.6, SLY and llvmlite. Developed as part of the January 2018 Write a compiler course, under the supervision of David Beazly.
  • Hython - Haskell-powered Python 3 interpreter.
  • llgo - Go frontend for LLVM written in Go.
  • MAL: Make a Lisp - Clojure-inspired Lisp interpreter implemented in 64 languages.
  • MetaScala - Metacircular JVM implementation in Scala.
  • mini-js - Experimental self-hosted JavaScript compiler in 1K LoC.
  • MunVM - Lua VM & Compiler in C.
  • MY-BASIC - An embeddable BASIC dialect interpreter in C with modern paradigms.
  • oberonc - A single pass, self-hosting compiler for the Oberon-07 programming language. It targets the JVM.
  • Poprc - Compiler for the Popr Language.
  • PyCOOLC - Compiler for the COOL Programming Language written in Python 3.
  • RabbitVM - RISC-based VM implementation in C.
  • StackVM - Virtual Machine with an integrated VRAM display.
  • stack_cpu - Stack-machine simulator.
  • The Super Tiny Compiler - Tiny educational compiler project in JavaScript.
  • tinyc.c - Tiny-C language compiler in C.
  • tisp - “Time is Space” Programming Language Interpreter.
  • Ultra Tiny Compiler - Another tiny compiler in less then 90 lines of code.
Runtimes and VMs