A toy MSP430 assembler using recursive descent parsing for fast and efficient operation
Go to file
John Breaux fc8f8b9622 v0.3.0: Total overhaul
- Everything has been rewritten
- Modularity is improved somewhat
  - No dependency injection in preprocessor/parser, though
- There are now early and late constant evaluation engines
  - This engine allows for by-value access to already-assembled code
  - Performs basic math operations, remainder, bitwise logic, bit shifts, negation, and bit inversion
  - Also allows for indexing into already-generated code using pointer-arithmetic syntax: `*(&main + 10)`. This is subject to change? It's clunky, and only allows word-aligned access. However, this rewrite is taking far too long, so I'll call the bikeshedding here.
  - Pretty sure this constant evaluation is computationally equivalent to Deadfish?
2024-01-30 05:27:12 -06:00
examples/msp430-help v0.3.0: Total overhaul 2024-01-30 05:27:12 -06:00
msp430-asm v0.3.0: Total overhaul 2024-01-30 05:27:12 -06:00
sample-asm v0.3.0: Total overhaul 2024-01-30 05:27:12 -06:00
src v0.3.0: Total overhaul 2024-01-30 05:27:12 -06:00
.gitignore Update .gitignore: Ignore vscode workspace config files 2024-01-26 18:27:23 -06:00
.rustfmt.toml v0.3.0: Total overhaul 2024-01-30 05:27:12 -06:00
Cargo.toml v0.3.0: Total overhaul 2024-01-30 05:27:12 -06:00
LICENSE.md v0.3.0: Total overhaul 2024-01-30 05:27:12 -06:00
readme.md Add readme.md 2023-08-20 00:53:35 -05:00

msp430-asm

A toy assembler for the TI MSP430, built with MicroCorruption in mind.

Usage

msp430-asm [-|-f|--file]

The frontend isn't very smart. It does no fancy arg parsing, no key interpretation or cursor manipulation or TUI goodness that everyone knows and loves. It does four things: Read. Evaluate. Print. Loop. Basic REPL. It doesn't even check whether you're running interactively or not.

By default, the assembler operates in repl mode, and each line is treated in isolation. This is great for quickly looking up an instruction.

To parse an entire file at once, and get useful context when there's a parse error, pipe it in through stdin with - as such:

cat valid.asm | msp430-asm -f

You can press Ctrl+D on Linux to emit an EOF over the terminal.

Motivations

  • Microcorruption's assembler sucks
  • I got tired of stringly-typed Python
  • I wanted to write a parser
  • I wanted to write Rust
  • I'm a fan of interactive programs