Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ohjurot/sregmachine
Simple register machine for learning assembler (Windows .NET)
https://github.com/ohjurot/sregmachine
assembler-emulator assembly-language csharp dotnet register-machine
Last synced: about 14 hours ago
JSON representation
Simple register machine for learning assembler (Windows .NET)
- Host: GitHub
- URL: https://github.com/ohjurot/sregmachine
- Owner: Ohjurot
- License: mit
- Created: 2021-07-10T11:17:20.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-07-10T11:40:05.000Z (over 3 years ago)
- Last Synced: 2024-12-19T13:11:54.635Z (about 2 months ago)
- Topics: assembler-emulator, assembly-language, csharp, dotnet, register-machine
- Language: C#
- Homepage:
- Size: 1.38 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SRegMachine
Simple register machine for learning assembler (Windows .NET 4.8)![SRegMachine_Image](./image.png)
## Instruction List
#### Loading and moving Values
```assembly
LOADI $value # Load the value '$value' into register 'reg0'
``````assembly
MOV # Copyies the value from 'reg1' into 'reg0'
```#### Math with registers
Every math instructions will set flags (zero, neg, ov)
```assembly
ADD # 'reg0' = 'reg0' + 'reg1'
``````assembly
SUB # 'reg0' = 'reg0' - 'reg1'
``````assembly
MUL # 'reg0' = 'reg0' * 'reg1'
``````assembly
DIV # 'reg0' = 'reg0' / 'reg1'
``````assembly
MOD # 'reg0' = 'reg0' % 'reg1'
```#### Math with integers
Every math instructions will set flags (zero, neg, ov)
```assembly
ADD $value # 'reg0' = 'reg0' + 'value'
``````assembly
SUB $value # 'reg0' = 'reg0' - 'value'
``````assembly
MUL $value # 'reg0' = 'reg0' * 'value'
``````assembly
DIV $value # 'reg0' = 'reg0' / 'value'
``````assembly
MOD $value # 'reg0' = 'reg0' % 'value'
```#### Jumping
Labels are defined by typing a ':' (Collum)
```assembly
JMP $label_name # Will jumpt to 'label_name'
``````assembly
JMPZ $label_name # Will jumpt to 'label_name' when zero flag is set
``````assembly
JMPNZ $label_name # Will jumpt to 'label_name' when zero flag is NOT set
``````assembly
JMPN $label_name # Will jumpt to 'label_name' when negative flag is set
``````assembly
JMPNN $label_name # Will jumpt to 'label_name' when negative flag is NOT set
``````assembly
JMPO $label_name # Will jumpt to 'label_name' when overflow flag is set
``````assembly
JMPNO $label_name # Will jumpt to 'label_name' when overflow flag is NOT set
```#### Flow Control
```assembly
HOLD # Will hold the execution
``````assembly
RST # Will reset to the first instuction (continues execution)
``````assembly
EOF # End of file (RST + HOLD)
```