From llvm-mos
Jump to navigation Jump to search
Hello world of LLVM assembler targeting Commodore VIC-20
Hello world of LLVM assembler targeting Apple IIe
Hello world of LLVM assembler targeting Commodore 64
Hello world in Rust, with factorial calculation, for Atari 800, proof of concept by mrk

Welcome to the llvm-mos project![edit | edit source]

The llvm-mos project is intended to create a first-class backend in LLVM for the MOS Technology 65xx series of microprocessors and their clones.

To get started playing with the tools, check out Getting started.

There have been many failed attempts to create a 6502 backend for LLVM. Ours is the first to successfully compile working programs. The llvm-mos Clang appears to be compatible with freestanding C99, and the relevant portions of the LLVM end-to-end test suite pass on a simulated 6502 in a variety of configurations. The project also includes a feature-complete assembler and ELF linker support for generic 6502 targets.

This project permits modern C programs, written in a modern style, to target common microcomputers of the 1980s, including but not limited to the Commodore 64, the Apple IIe, and the Atari 8-bit family.

Our work is based on LLVM's novel GlobalISel architecture, and as such, our compiler is aggressive about pursuing optimization opportunities for the 65xx series. While our focus is currently feature-completeness, not optimization, we've already overcome all existing theoretical hurdles necessary to emit high quality 6502 code.

The development team has established a project on Github. Acceptance tests and packaging occur via Github actions as well.

We provide current builds of the main branch of the llvm-mos tool chain for Windows, MacOS, and Ubuntu Linux.

Ongoing, public development discussions occur on Slack. If you're an experienced programmer, with a detailed understanding of the LLVM architecture, then please join our Slack group now and help out.

Notice[edit | edit source]

The llvm-mos project is not officially affiliated with or endorsed by the LLVM Foundation or LLVM project. Our project is a fork of LLVM that provides a new backend and Clang target; our project is based on LLVM, not a part of LLVM. Our use of LLVM or other related trademarks does not imply affiliation or endorsement.

Category tree[edit | edit source]

Categories[edit | edit source]

Pages[edit | edit source]