虚拟机实现原理

2022/08/16 编译原理

虚拟机是由软件实现的计算机。

以下是一个由 JavaScript 实现的虚拟机。

let virtualMachine = function(program) {
    let programCounter = 0;
    let stack = [];
    let stackPointer = 0;
    while (programCounter < program.length) {
        let currentInstruction = program[programCounter];
        switch (currentInstruction) {
            case 'PUSH':
                stack[stackPointer] = program[programCounter+1];
                stackPointer++;
                programCounter++;
                break;
            case 'ADD':
                right = stack[stackPointer-1]
                stackPointer--;
                left = stack[stackPointer-1]
                stackPointer--;
                stack[stackPointer] = left + right;
                stackPointer++;
                break;
            case 'MINUS':
                right = stack[stackPointer-1]
                stackPointer--;
                left = stack[stackPointer-1]
                stackPointer--;
                stack[stackPointer] = left - right;
                stackPointer++;
                break;
        }
        programCounter++;
    }
    console.log("stacktop: ", stack[stackPointer-1]);
}

let program = [
    'PUSH', 3,
    'PUSH', 4,
    'ADD',
    'PUSH', 5,
    'MINUS'
];

virtualMachine(program);

Search

    Table of Contents