Этот проект содержит код простой виртуальной машины x86, написанной на JavaScript. Эта виртуальная машина может выполнять некоторые команды, такие как перемещение значений в регистры, сложение и вычитание.
Для запуска виртуальной машины, откройте файл index.js
и добавьте в него код, который вы хотите выполнить. Например:
const cpu = new CPU();
cpu.registers[0] = 0; // eax
cpu.registers[3] = 50; // esi
cpu.memory[0] = 0xeb; // jmp loop
cpu.memory[1] = 0xf9; // offset from current address (-7)
cpu.run();
console.log(cpu.registers[0]); // should output 55
Затем запустите этот файл в Node.js:
node index.js
Виртуальная машина поддерживает следующие команды:
mov(src, dest)
: перемещает значениеsrc
в регистр или ячейку памятиdest
.add(a, b)
: складывает значенияa
иb
и сохраняет результат в регистре или ячейке памятиb
.sub(a, b)
: вычитает значениеb
изa
и сохраняет результат в регистре или ячейке памятиb
.jmp(address)
: переходит к указанному адресу в памяти.cmp(a, b)
: сравнивает значенияa
иb
и устанавливает флагиcarry
,zero
иnegative
.je(address)
: переходит к указанному адресу в памяти, если флагzero
установлен.