An open API service indexing awesome lists of open source software.

https://github.com/rysteq/stacky


https://github.com/rysteq/stacky

Last synced: about 1 year ago
JSON representation

Awesome Lists containing this project

README

          

# Stacky

Stacky is a stack based interpreted language that I made in a few hours as a stepping stone in my journey to interpreters. Stacky is a simple language, only compromising of 21 instructions with 18 of them requiring no operands at all and the stack being 64 kilobytes in size.

The instructions are as follows


Instruction
Description


PUSH
Pushes the byte value provided into the stack


POP
Pops the last value pushed from the stack


POPP
Pops the last value pushed from the stack and prints out the integer


POPPC
Pops the last value pushed from the stack and prints out the ASCII character


INC
Pops the last value pushed from the stack, increments it, and pushes it back into the stack


DEC
Pops the last value pushed from the stack, decrements it, and pushes it back into the stack


ADD
Pops the last two values from the stack, adds them, and pushes the result into the stack


SUB
Pops the last two values from the stack, subtracts them, and pushes the result into the stack


MUL
Pops the last two values from the stack, multiplies them, and pushes the result into the stack


DIV
Pops the last two values from the stack, divides them, and pushes the quotient into the stack


MOD
Pops the last two values from the stack, divides them, and pushes the remainder into the stack


COPY
Pops the last value from the stack and pushes it two times into the stack


CCF
Clears the conditional flag


CMPE
Pops the last two values from the stack and compares them, if they are equal the conditional flag is set to true


CMPL
Pops the last two values from the stack and compares them, if the first value is smaller than the second the conditional flag is set to true


CMPG
Pops the last two values from the stack and compares them, if the first value is bigger than the second the conditional flag is set to true


JC
Jumps to the specified line if the conditional flag is set to true


JMP
Jumps to the specified line


RPUSH
Read a key character from the keyboard as input and pushes the value into the stack


NEWL
Prints a new line character


HAULT
Stops the program and sets the exit code equal to the value provided