SMall3Bit Instruction Set
- sm3b.c
- A code golf style 528 character implementation of SM3B in C
- Details:
- Build it using any C compiler (Should work on any compiler since 1973)
- Values are stored as integers
- 64 integers of memory
- Usage:
sm3b instructions...
- Example:
sm3b 10++
- rsm3b.c
- Really small sm3b.c
- Unnessesary whitespace and comments removed
- 437 characters
- sm3b.js
- A visual implementation of SM3B in Javascript
- Has animations
- 65536 integers of memory
- sm3b.html
- HTML for sm3b.js
- SM3B.8xp
- TI-Basic implementation of SM3B
- List 0 is the memory (Can be resized)
- List 1 is the program, or instructions can be typed manually
- Codes
- 0: 0
- 1: 1
- +: 2
- -: 3
- $: 4
- @: 5
- #: 7
- ?: 6
- Special Codes
- 10: Run program from list 1
- 20: Don't print register state
- 30: Map memory address 0 to user input
- SM3B.8xp.txt
- Plain text version of SM3B.8xp
- sm3b.py
- Python implementation of SM3B
- Pass program as the first argument
- Written with the font set to Aurebesh
Register | Description |
---|---|
X | The main register |
Y | The general purpose register |
A | The address register |
I | The instruction address register |
C | The accumulator value |
2^3=8 Instructions
Instruction | Behavior |
---|---|
0 | If previous instruction was not 0 or 1, reset X to zero, otherwise, leftshift X and insert a zero |
1 | If previous instruction was not 0 or 1, reset X to one, othersise, leftshift X and insert a one |
+ | Add the value of X to the accumulator and copy the result into X |
- | Subtract the value of X from the accumulator and copy the result into X |
# | Swap the values of X and Y |
@ | Swap the values of X and A |
$ | Swap the values of X and the value at the memory address pointed to by A |
? | Swap the values of A and I, jumping the the program address, if X is not zero |