| Crates.io | asa |
| lib.rs | asa |
| version | 1.0.0 |
| created_at | 2025-08-22 12:14:05.493139+00 |
| updated_at | 2025-09-05 15:18:17.443063+00 |
| description | Advanced Subleq Assembler. Assembles 'sublang' to subleq |
| homepage | |
| repository | https://github.com/Kat9-123/asa/ |
| max_upload_size | |
| id | 1806249 |
| size | 265,658 |
This Subleq assembler assembles a custom language, called Sublang, into Subleq
Subleq or SUBtract and jump if Less than or EQual to zero is an assembly language that has only the SUBLEQ instruction, which has three operands: A, B, C.
The value at memory address A is subtracted from the value at address B. If the resulting number is less than or equal to zero, a jump takes place to address C. Otherwise the next instruction is executed.
Since there is only one instruction, the assembly does not contain opcodes.
So:
SUBLEQ 1 2 3
would just be
1 2 3
A very basic subleq interpreter written in Python would look as follows
pc = 0
while True:
a = mem[pc]
b = mem[pc + 1]
c = mem[pc + 2]
result = mem[b] - mem[a]
mem[b] = result
if result <= 0:
pc = c
else:
pc += 3
Most subleq implementations, this one included, also include the IO operations: INPUT, OUTPUT and HALT.
These can be achieved by respectively having A = -1, B = -1 and C = -1. INPUT and OUTPUT read or write singular ASCII characters
cargo install asa or download the binary from the releases tab
asa MySubleq.sbl
See https://github.com/Kat9-123/sublang-highlighting
This project is functionally complete, but the documentation for the assembler, Sublang and Sublib is still lacking. As is the Sublib itself, which isn't finished yet