Update README.md

This commit is contained in:
2026-07-16 14:03:58 -05:00
parent 24f5bff78d
commit 5902eae153

View File

@ -1,49 +1,48 @@
Cool ARM Ripoff #Cool ARM Ripoff
A simple (and ridiculous) virtual machine/CPU made for no real reason/purpose. *A simple (and ridiculous) virtual machine/CPU made for no real reason/purpose.*
Written in C, made by David Goeke. ***Written in C, made by David Goeke.***
Current features: ###Current features:
few to none. - few to none.
- 32 general purpose registers
- 32-bit addresses
32 general purpose registers ###Needed features:
32-bit addresses - push/pop
- call/ret
- jmp/conditional jmps
- store high 11 bits of an immediate in memory
Needed features: ###instuctions (arithmetic):
push/pop - add
call/ret - sub (subtract)
jmp/conditional jmps - mul (multiply)
store high 11 bits of an immediate in memory - div (divide)
- mod (modulus, division remainder)
- shl (logical shift left)
- shr (logical shift right)
- ahr (arithmetic shift right)
- ror (logical rotate right)
- and (logical AND)
- or (logical OR)
- xor (logical XOR)
- not (logical NOT/invertion)
- xchg (exchange registers)
instuctions (arithmetic): ###Insutrctions (load/store):
add - ldr (load register with value from memory, using the program counter as the base)
sub (subtract) - lds (load register with value from memory, using the stack pointer as the base)
mul (multiply) - ldb (load register with value from memory, using a specified register as the base)
div (divide) - ldi (load register with and immediate value, only low 21 bits)
mod (modulus, division remainder) - str (store register at memory, using the program counter as the base)
shl (logical shift left) - sts (store register at memory, using the stack pointer as the base)
shr (logical shift right) - stb (store register at memory, using the specified register as the base)
ahr (arithmetic shift right) - ldh (load high 11 bits of register with immediate)
ror (logical rotate right) - sti (store a 21-bit immediate at memory, using the program counter as the base)
and (logical AND) - stj (store a 21-bit immediate at memory, using the stack pointer as the base)
or (logical OR)
xor (logical XOR)
not (logical NOT/invertion)
xchg (exchange registers)
Insutrctions (load/store): ###Instructions (misc):
ldr (load register with value from memory, using the program counter as the base) - nop (do nothing)
lds (load register with value from memory, using the stack pointer as the base)
ldb (load register with value from memory, using a specified register as the base)
ldi (load register with and immediate value, only low 21 bits)
str (store register at memory, using the program counter as the base)
sts (store register at memory, using the stack pointer as the base)
stb (store register at memory, using the specified register as the base)
ldh (load high 11 bits of register with immediate)
sti (store a 21-bit immediate at memory, using the program counter as the base)
stj (store a 21-bit immediate at memory, using the stack pointer as the base)
Instructions (misc):
nop (do nothing)