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.
Compiler Explorer currently supports the llvm-mos toolchain, so you can experiment with the compiler without downloading anything. Here's a simple Commodore 64 project that shows the compiler in action.
To download and use the tools locally, check out Getting started.
Our work encompasses the following:
- An open-source fork of LLVM that provides first-class support to the MOS 6502 and near compatibles. Our compiler implements multiple novel approaches in order to optimize 6502 code size and speed, and it tends to outperform legacy 6502 compilers. Our compiler includes, but is not limited to:
- broad C99 and C++11 freestanding compatibility
- built-in IEEE-754 floating point support
- first-class integrated 65xx assembler support
- clang's world-class error messages
- An open-source software development kit (SDK) that comprises target-specific code for common 65xx-based microcomputers. It includes a minimal C standard library with support for memory management and text output. Some example programs are included. We currently support over two dozen targets, including a host-based simulator. The list of supported targets is growing rapidly.
- Complete ELF support for the 6502 series, which permits us to use the existing suite of LLVM tools for creating, analyzing and modifying 6502 object files and libraries.
- An open-source automated test and packaging infrastructure. We use Github runners to verify builds of our compiler against appropriate LLVM test suites, as well as our own smoke tests. We also run automated benchmarks using this infrastructure.
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. 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
- Ca65 comparison
- Cc65 integration
- Character set
- Clangd
- Code generation overview
- Community
- 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
- Zig