JSFiddle - React, Tailwind, and code Playground
HTML
<textarea id="text" cols="40" rows="10"></textarea>
<br/>
<button onclick="compile()">Compile</button>
<br/>
<textarea id="compiledArray" cols="40" rows="10" readonly></textarea>
JavaScript
window.compile = function()
{
var lines = $("#text").val().toLowerCase().match(/[^\r\n]+/g);
var stack = [];
for (var i = 0; i < lines.length; i++)
compileLine(lines[i], stack);
var output = "";
for (var i = 0; i < stack.length; i++)
if (typeof stack[i] == "string")
output += "\n";
else
output += "0x" + stack[i].toString(16) + " ";
$("#compiledArray").val(output);
}
window.compileLine = function(line, stack){
var params = line.split(" ")
if (params[0] == "load"){
stack.push(0);
stack.push(getInt(params[1]));
stack.pushArr(getInt(params[2]));
}
if (params[0] == "rload"){
stack.push(1);
stack.push(getInt(params[1]));
stack.push(getInt(params[1]));
}
if (params[0] == "push"){
stack.push(2);
stack.push(getInt(params[1]));
}
if (params[0] == "pop"){
stack.push(3);
stack.push(getInt(params[1]));
}
if (params[0] == "add"){
stack.push(4);
stack.push(getInt(params[1]));
stack.push(getInt(params[2]));
}
if (params[0] == "sub"){
stack.push(5);
stack.push(getInt(params[1]));
stack.push(getInt(params[2]));
}
if (params[0] == "mul"){
stack.push(6);
stack.push(getInt(params[1]));
stack.push(getInt(params[2]));
}
if (params[0] == "div"){
stack.push(7);
stack.push(getInt(params[1]));
stack.push(getInt(params[2]));
}
if (params[0] == "jmp"){
stack.push(8);
stack.pushArr(getInt(params[1]));
}
if (params[0] == "cmp"){
stack.push(9);
stack.push(getInt(params[1]));
stack.push(getInt(params[2]));
}
if (params[0] == "branchlt"){
stack.push(10);
stack.pushArr(getInt(params[1]));
}
if (params[0] == "brancheq"){
stack.push(11);
stack.pushArr(getInt(params[1]));
}
if (params[0] == "branchgt"){
stack.push(12);
stack.pushArr(getInt(params[1]));
}
if (params[0] == "branchne"){
stack.push(13);
stack.pushArr(getInt(params[1]));
}
stack.push("NEW LINE");
}
window.getInt = function(x) {
if (x.trim().startsWith("<--"))
return "COMMENT";
...