assembler - Move 'main' up top
This commit is contained in:
parent
e25723fcc9
commit
c8c188e55a
|
|
@ -9,11 +9,37 @@ const DBG = require('./dbg.js');
|
||||||
|
|
||||||
const CFG = require('./machine.config.js');
|
const CFG = require('./machine.config.js');
|
||||||
|
|
||||||
// Configure pseudo-ops:
|
/** MAIN **/
|
||||||
|
|
||||||
|
// Handle command-line options...
|
||||||
|
const opts = new Opter(process.argv);
|
||||||
|
opts.synonymize('-d', '--debug');
|
||||||
|
opts.requireOption('-i', 'Input file required (-i prog.asm)');
|
||||||
|
opts.requireOptionArgument('-i', 1, 1, 'Input file required (-i prog.asm)');
|
||||||
|
opts.requireOptionArgument('-o', 1, 1, 'Missing output file name (-o prog.asm)');
|
||||||
|
|
||||||
|
const inputFilename = opts.opts.i[0];
|
||||||
|
const inputFile_str = fs.readFileSync(inputFilename, 'utf8');
|
||||||
|
|
||||||
|
let outputFileProvided = opts.contains('-o');
|
||||||
|
let returnOnStdout = !outputFileProvided;
|
||||||
|
let outputFilename = outputFileProvided ? opts.opts.o[0] : null;
|
||||||
|
|
||||||
|
let outputWithMetadata = opts.contains('--debug');
|
||||||
|
|
||||||
|
// Initialize debugger...
|
||||||
|
const dbg = returnOnStdout ? new DBG('none') : new DBG('nitpick');
|
||||||
|
|
||||||
|
// Assemble...!
|
||||||
|
assemble(inputFile_str, outputFilename, outputWithMetadata);
|
||||||
|
|
||||||
|
|
||||||
|
/** Configure pseudo-ops **/
|
||||||
const ASM_IP_LABEL = '*';
|
const ASM_IP_LABEL = '*';
|
||||||
const ASM_CONSTANT_PREFIX = '#';
|
const ASM_CONSTANT_PREFIX = '#';
|
||||||
const ASM_LABEL_PREFIX = '@';
|
const ASM_LABEL_PREFIX = '@';
|
||||||
|
|
||||||
|
/** Configure mnemonics **/
|
||||||
const mnemonicsWithOptionalArgs = ['end', 'nop'];
|
const mnemonicsWithOptionalArgs = ['end', 'nop'];
|
||||||
const mnemonics2opcodes = {
|
const mnemonics2opcodes = {
|
||||||
end: { direct: 0, indirect: 0 },
|
end: { direct: 0, indirect: 0 },
|
||||||
|
|
@ -402,32 +428,6 @@ function stripWhitespaceFromEnds(line) {
|
||||||
return line;
|
return line;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** MAIN **/
|
|
||||||
|
|
||||||
// Handle command-line options...
|
|
||||||
const opts = new Opter(process.argv);
|
|
||||||
opts.synonymize('-d', '--debug');
|
|
||||||
opts.requireOption('-i', 'Input file required (-i prog.asm)');
|
|
||||||
opts.requireOptionArgument('-i', 1, 1, 'Input file required (-i prog.asm)');
|
|
||||||
opts.requireOptionArgument('-o', 1, 1, 'Missing output file name (-o prog.asm)');
|
|
||||||
|
|
||||||
const inputFilename = opts.opts.i[0];
|
|
||||||
const inputFile_str = fs.readFileSync(inputFilename, 'utf8');
|
|
||||||
|
|
||||||
let outputFileProvided = opts.contains('-o');
|
|
||||||
let returnOnStdout = !outputFileProvided;
|
|
||||||
let outputFilename = outputFileProvided ? opts.opts.o[0] : null;
|
|
||||||
|
|
||||||
let outputWithMetadata = opts.contains('--debug');
|
|
||||||
|
|
||||||
// Initialize debugger...
|
|
||||||
const dbg = returnOnStdout ? new DBG('none') : new DBG('nitpick');
|
|
||||||
|
|
||||||
// Assemble...!
|
|
||||||
assemble(inputFile_str, outputFilename, outputWithMetadata);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Assemble source code into machine code.
|
* Assemble source code into machine code.
|
||||||
* If 'includeMetadata' is true, a JSON object containing
|
* If 'includeMetadata' is true, a JSON object containing
|
||||||
|
|
@ -450,4 +450,5 @@ function assemble(sourceCode, outputFile='out.txt', includeMetadata=false) {
|
||||||
const debugJSON = JSON.stringify(out);
|
const debugJSON = JSON.stringify(out);
|
||||||
fs.writeFileSync(outputFile, debugJSON);
|
fs.writeFileSync(outputFile, debugJSON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue