/StanModeArchitecture

A simple Instruction Set Architecture I defined as well as an assembler, disassembler, and emulator for said ISA

Primary LanguageC#

StanModeArchitecture

SM Architecture and ISA

Syntax Hightlighter and VSCode extension for SM Architecture can be found here: https://github.com/RyanAlameddine/SMAVSCode

Quick Summary of op-codes:

OpCode Operation Description Category Params Params
noOp No Operator No operation is performed by this opCode Other
add Add This operation performs Destination = Source 1 + Source 2 Math Destination Register
Source 1 Register
Source 2 Register
sub Subtract This operation performs Destination = Source 1 - Source 2 Math Destination Register
Source 1 Register
Source 2 Register
mult Multiply This operation performs Destination = Source 1 * Source 2 Math Destination Register
Source 1 Register
Source 2 Register
div Divide This operation performs Destination = Source 1 / Source 2 Math Destination Register
Source 1 Register
Source 2 Register
mod Mod This operation performs Destination = Source 1 % Source 2 Math Destination Register
Source 1 Register
Source 2 Register
rSft Shift Right This operation performs Source = Source >> Amount Math Source Register
Amount Short
lSft Shift Left This operation performs Source = Source << Amount Math Source Register
Amount Short
not Not Operator This operation performs Source = ~Source Logic Source Register
and And Operator This operation performs Destination = Source 1 & Source 2 Logic Destination Register
Source 1 Register
Source 2 Register
or Or Operator This operation performs Destination = Source 1 Source 2 Logic Destination
Source 1 Register
Source 2 Register
xor Exclusive Or Operator This operation performs Destination = Source 1 ^ Source 2 Logic Destination Register
Source 1 Register
Source 2 Register
eql Check Equality This operation performs Destination = Source 1 == Source 2 Comparison Destination Register
Source 1 Register
Source 2 Register
grtr Check Greater Than This operation performs Destination = Source 1 > Source 2 Comparison Destination Register
Source 1 Register
Source 2 Register
less Check Less Than This operation performs Destination = Source 1 < Source 2 Comparison Destination Register
Source 1 Register
Source 2 Register
nEql Check InEquality This operation performs Destination = Source 1 != Source 2 Comparison Destination Register
Source 1 Register
Source 2 Register
grtE Check Greater Than or Equal This operation performs Destination = Source 1 >= Source 2 Comparison Destination Register
Source 1 Register
Source 2 Register
lssE Check Less Than or Equal This operation performs Destination = Source 1 <= Source 2 Comparison Destination Register
Source 1 Register
Source 2 Register
tp Teleport This operation performs jumps to the address Address Flow Address Short
tpZ Teleport if Zero This operation performs jumps to the address Address if Source == 0 Flow Source Register
Address Short
tpNZ Teleport if not Zero This operation performs jumps to the address Address if Source != 0 Flow Source Register
Address Short
load Load This operation loads value at Address into Destination Memory Destination Register
Address Short
unld Unload This operation unloads value from Source into Address Memory Source Register
Address Short
push Push This operation pushes Source to the stack Memory Source Register
pop Pop This operation pops from the stack into *Destination Memory Destination Register
peek Peek This operation loads from the stack offset by Offset into Destination Memory Destination Register
Offset Short
set Set This operation sets the register Destination to Value Memory Destination Register
Value Short
stPr Set in Program space This operation sets the register Destination to the Label's address relative to Program Space Memory Destination Register
Label Short
mov Move This operation copies Source to Destination Memory Destination Register
Source Register
call Call This operation calls a function at address Address CallRet Address Short
ret Return This operation returns from a function CallRet
ldI Load Indirect This operation loads value at address Source into Destination Indirect Destination Register
Source Register
uldI Unload Indirect This operation unloads Source into value at address Destination Indirect Destination Register
Source Register

Full ISA op-code description and ISA conventions can be found here: https://docs.google.com/spreadsheets/d/1sc8BUHLu5ysgNF8ssG-PJg16butrIkTLEKPQxbujhpc/edit#gid=0