30 lines
961 B
JavaScript
Executable File
30 lines
961 B
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
// Run: `./run-cpu.js run assembly.asm`
|
|
// Debug: `./run-cpu.js debug assembly.asm`
|
|
// Run with single-stepping: `./run-cpu.js step assembly.asm`
|
|
// Debug with single-stepping: `./run-cpu.js stepdebug assembly.asm`
|
|
|
|
const fs = require('fs');
|
|
const computer = require('./cpu.js');
|
|
const assembler = require('./assembler.js');
|
|
const { logRunningHeader, logMemory } = require('./logging.js');
|
|
|
|
const mode = process.argv[2];
|
|
|
|
// console.log(`Reading ${filename}`);
|
|
const filename = process.argv[3];
|
|
const inputFile_str = fs.readFileSync(filename, 'utf8');
|
|
|
|
let machineCode = assembler.assemble(inputFile_str);
|
|
if (mode === "debug") {
|
|
logRunningHeader();
|
|
computer.runProgram(machineCode, true);
|
|
} else if (mode === "stepdebug") {
|
|
logRunningHeader();
|
|
computer.singleStepProgram(machineCode, true);
|
|
} else if (mode === "step") {
|
|
computer.singleStepProgram(machineCode, false);
|
|
} else {
|
|
computer.runProgram(machineCode, false, 200);
|
|
} |