Toolchain for assembly and compilation of new code for FM10000 Instruction Processor Boot State Machine
Go to file
DataHoarder 835c84c944
Some checks reported errors
continuous-integration/drone/push Build was killed
Major overhaul of Stack system and calling convention, added PUSH, PUT, GET (and immediate versions), optimized FastCall, expanded RET
* Stack redesigned to have a Stack pointer and Frame pointer, and restoration of such for ease of access
* Can now directly add parameters to RET for setting RRET
* PUT, GET (and immediate versions) ops have been added to interact with stack offsets without pushing/popping
* New PUSH op to push values onto stack, and PushGroup optimized multiple value set
* FastCall now uses optimized PushGroup and minimizes amount of PUSH calls
2021-08-03 00:02:49 +02:00
asm Major overhaul of Stack system and calling convention, added PUSH, PUT, GET (and immediate versions), optimized FastCall, expanded RET 2021-08-03 00:02:49 +02:00
src Major overhaul of Stack system and calling convention, added PUSH, PUT, GET (and immediate versions), optimized FastCall, expanded RET 2021-08-03 00:02:49 +02:00
.drone.jsonnet Fix .drone.jsonnet build 2020-12-31 22:16:00 +01:00
.gitignore WIP: Initial commit, working basic assembler 2020-12-31 22:06:52 +01:00
CMakeLists.txt Embed rrcc git version on binary 2021-08-02 21:01:00 +02:00
COPYING WIP: Initial commit, working basic assembler 2020-12-31 22:06:52 +01:00
README.md Added full image format, include some debug information at the tail of functions 2021-01-04 08:16:20 +01:00

rrcc (Red Rock Canyon Compiler)

Toolchain for assembly and compilation of new code for FM10000 Instruction Processor Boot State Machine

NOTE: This is a Work In Progress project

Requirements

  • cmake >= 3.13
  • g++ (GCC C++) or clang
  • make

Compilation

  • $ mkdir build && cd build
  • $ cmake ../ && make
  • An executable named ./rrc-as should now exist.

rrc-as

Assembler and linker, kind-of 2-Pass. Quite loose token syntax defined in Token.h.

Usage

  • $ ./rrc-as code.asm [code2.asm ...] output.bin
  • The function named entrypoint will be called by init asm
  • Multiple asm files can be specified. They are interpreted from first in arguments to last.
  • You can call functions across files, as they will be linked together.
  • Directive resolution occurs at parsing time, so while you can override values it does not affect previously parsed files.
  • Directives like .constant are passed to the next files.
  • These files will be automatically included in front every time:

License

  • BSD-3-Clause
  • See COPYING for the full license.