The goal of this project is use the virtualization power to provide a safe encryption used in the network communication.
- COVM Compiler
- The compiler turns the virtual-machine files into a runable bytecode.
- COVM Interpreter
- The interpreter runs the bytecode generated by the compiler.
- COVM IDE
- The integrated development environment provides an easy way to create virtual-machine files to adjust the complexcity and instructions.
- NOP - An operator that does nothing.
- ADD - Adds a number to a register
- SUB - Subtracts a number inside a register
- MUL - Multiplies a number inside a register with x
- DIV - Divides a number inside a register with x
- AND - Bitwise AND
- XOR - Bitwise XOR
- OR - Bitwise OR
- NOT - Bitwise NOT
- INC - Increases the number by one inside a register
- DEC - Decreases the number by one inside a register
- RET - Jumps to the end of the function
- MOV - Moves data into a register
- PUSH - Pushes data into the stack
- POP - Removes data from the stack
- LSTART - Defines the start of a function
- LEND - Defines the end of a function
- CALL - Calls a function by index
- JMP - Jumps to an instruction
- CMP - Compares register to any given data (register or hard-coded value)
- JT - Jumps if the above check was true
- JNT - Jumps if the above check was false
more will be added later.
Registers do not have a fixed size, but it is recommended to split them like the following:
- 16 bit-registers: AX, BX, CX, DX
- 32 bit-registers: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI
- 64 bit-registers: RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI (R8, R9, ...)
- 128-bit-registers...
- ...
Currently the COVM does not make use of flags, here are ones planned for the future usage:
- CF
- PF
- AF
- ZF
- TF
- IF
- DF
- OF
- CTF
You need Visual Studio to compile COVM.
COVM is licensed under GPLv2, which means you can freely distribute and/or modify the source of COVM.