Этот проект содержит код простой виртуальной машины 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установлен.