imMatt/StayVM

★ 0Forks 0GoGitHub ↗Compare

README

#Currently Abandoned

StayVM

#Running

Stay <FILE_NAME>.stay

#Example Programs

Infinite Incremental Loop

0	|		PUSH, 1,	//PLACE 1 ON THE STACK
2	|		GET, 0,		//GET FROM 0 IN THE HEAP 
4	|		ADD,		//ADD 1 AND GET0 TOGETHER
5	|		MOV, 0,		//OVERWRITE HEAP0
7	|		CLRS,		//CLEAR STACK AND RESET
8	|		GOTO, 0,	//LOOP BACK TO START
10	|		HALT,		//EXIT (NEVER REACHED)

Add/Subtract and Print

0	|		PUSH, 1,	//PLACE 1 ON THE STACK
2	|		PUSH, 2,	//PLACE 2 ON THE STACK
4	|		ADD/SUB,	//ADD/SUB 1 AND 2
5	|		PRINT,		//PRINT SUM
6	|		HALT,	  	//EXIT

#Runtime

Launch

Check that the file is valid, hashing, valid commands, etc. Syntax checking, error checking, etc.

Parse <FILE_NAME>.stay to an int[] Execute through commans and their arguments,

LOAD <FILE_NAME>.stay
CHECK

PARSE
EXECUTE

--> LOAD COMMAND TO INT ARRAY
--> EXECUTE COMMAND AND MOVE TO VALID LOCATION IN CODE
--> EG. Execute a PUSH then jump an extra line so the argument is not called as a command

Execution

Code


1 |   PUSH		- CALLS PUSH ON NEXT VALUE
2 |		12			- PUTS 12 INTO THE STACK
3 |		PUSH		- CALLS PUSH ON NEXT VALUE
4 |		2			- PUTS 12 I NTO THE STACK
5 |		ADD 		- CALLS ADD ON THE BOTTOM 2 VALUES IN STACK (12 AND 2)
6 | 	PRINT		- PRINTS VALUE FROM BOTTOM OF THE STACK (14)

Stack


1 |   	[0,0,0,0]
2 |		[12,0,0,0]
3 |		[12,0,0,0]
4 |		[12,2,0,0]
5 |		[14,0,0,0]
6 | 	[14,0,0,0]
7 | 	[14,0,0,0]

```

*Heap*

1 | [0,0,0,0 ] 2 | [0,0,0,0 ] 3 | [0,0,0,0 ] 4 | [0,0,0,0 ] 5 | [0,0,0,0 ] 6 | [0,0,14,0] 7 | [0,0,0,0 ]


#Instruction Set
| OP  | ARGS      | DESCRIPTION |
| :-: |:----------| :--------:|
PUSH  |	NONE	  | PUSH TO STACK
ADD   |	NONE	  | ADD TWO VALUES FROM STACK
SUB   |	NONE 	  | TAKE TWO VALUES B-A 
GOTO  | LINE 	  | JUMP TO LINE
PRINT |	NONE	  | PRINTS FROM CURRENT PLACE IN STACK
JIG   | LINE      | JUMP IF A > B
JIL   | LINE      | JUMP IF A < B
JIE   | LINE      | JUMP IF A = B
CLRS  | NONE     | CLEAR STACK
CLRH  | NONE      | CLEAR HEAP

GET   | MEM_LOCATION | GET FROM HEAP TO STACKcm
MOV  | MEM_LOCATION | MOVE FROM STACK TO HEAP

#Exit Codes
| EXIT CODE | DESCRIPTION |
| :-: 		|:------------|
| 601  		| STAY_VM STACK OVERFLOW (SC>LEN(STACK))|
| 602		| STAY_VM SYNTAX ERROR	|
| 603		| STAY_VM IO ERROR	|

Contributors

imMatt

Issues