Ss

From Esolang
Jump to navigation Jump to search

SS is an esoteric programming language created by CatLooks.

Overview

Each line in SS is written in int [byte] style.

It uses console I/O, has 2 registers and 256 bytes of shelf memory.

Memory

There're 2 registers: data & buffer. Each of them contain a single byte representing an unsigned integer.

For more space we have 256 bytes of shelf memory. Shelf memory is a type of memory similar to stack memory.

When you push a byte, everything moves to the left and the last byte is overwritten with value in data.

When you pop a byte, everything moves to the right and the last byte is moved to data.

You can also rotate the whole thing, either right or left.

Instructions

Opcode Description
set <byte> Sets a value for data
add <byte> Adds a value to data
sub <byte> Subtracts a value from data
and <byte> ANDs data by value
orb <byte> ORs data by value
xor <byte> XORs data by value
mov Moves data to shelf
pop Pops the top byte to data
rol Rotates shelf left
ror Rotates shelf right
inc Adds 1 to data
dec Subtracts 1 from data
rec Records data
res Restores data
lab <str> Creates a label
jmp <str> Jumps to label
equ <str> Jumps to label if data == buffer
neq <str> Jumps to label if data != buffer
gtr <str> Jumps to label if data > buffer
lss <str> Jumps to label if data < buffer
geq <str> Jumps to label if data >= buffer
leq <str> Jumps to label if data <= buffer
jsr <str> Jumps to label as a subroutine
rts Returns from subroutine
end Exits program
out Output data as an ASCII character
inp Input a single character into data
int <byte> Outputs data as a number in the system (2, 8, 10, 16)
str <str> Outputs a string (\n = new line, \r = blank, \s = space, \t = tab)

Interpreter

I wrote Python interpreter which is available on [1].