Welcome
Welcome to the llvm-mos project![edit | edit source]
llvm-mos is a fork of LLVM supporting the MOS Technology 65xx series of microprocessors and their clones.
To get started playing with the tools, check out Getting started with our SDK. See also the SDK API reference.
The llvm-mos Clang is broadly compatible with freestanding C99 and C++ (with some notable exceptions) 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, Atari 8-bit family, and the NES.
Our work is based on LLVM's novel GlobalISel architecture, and our compiler is aggressive about pursuing optimization opportunities for the 65xx series. While there's still much work to be done, we've already overcome the major theoretical hurdles necessary to emit high quality 6502 code.
Core development occurs on a project on Github. Acceptance tests and packaging occur via Github actions as well.
Ongoing, public development discussions occur on Discord. If you'd like to help, then please join our Discord group now.
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]
- Assembler
- Assembler relaxation
- Building llvm-mos on MacOS
- Building llvm-mos on Windows
- C Inline Assembly
- C calling convention
- C compiler
- C interrupts
- C volatile
- Cc65 integration
- Character set
- Clangd
- Code generation overview
- Contributing
- Current status
- Debugging code generation
- ELF overview
- ELF specification
- Emulator overview
- Extending SDK
- Findings
- Frequently asked questions
- Getting started
- Imaginary registers
- Linker Script
- Main Page
- Modifiers
- NES overview
- NES targets
- Optimization guide
- Overview
- PCE target
- Porting
- Rationale
- Rust
- SDK overview
- Welcome
- Zero page