fixes #30 + can use [IMM + REG|MEM] now

This commit is contained in:
KevinRamharak 2018-01-04 18:36:02 +01:00
parent 22c64110e9
commit 630b96f54c

View File

@ -211,6 +211,12 @@ function getOperandType(text, result) {
} else if (new RegExp('^(a|b|c|d|x|y)$').test(text.toLowerCase().substring(0, 1).toLowerCase())) { } else if (new RegExp('^(a|b|c|d|x|y)$').test(text.toLowerCase().substring(0, 1).toLowerCase())) {
//Starts with 1-char register //Starts with 1-char register
expr = text.substring(1); expr = text.substring(1);
} else if (new RegExp('^(bp|sp)$').test(text.toLowerCase().substring(text.length - 2))) {
//Ends with 2-char register
expr = text.substring(0, text.length - 2);
} else if(new RegExp('^(a|b|c|d|x|y)$').test(text.toLowerCase().substring(text.length - 1))) {
//Ends with 1-char register
expr = text.substring(0, text.length - 1);
} else { } else {
return OPERAND_INVALID; return OPERAND_INVALID;
} }
@ -224,13 +230,19 @@ function getOperandType(text, result) {
//Remove white space //Remove white space
expr = expr.replace(/\s+/g, ''); expr = expr.replace(/\s+/g, '');
//expr should now look like this: '+1' '-3' '+0x02' '+myLabel' //expr should now look like this: '+1' '-3' '+0x02' '+myLabel'
//or have '-'/'+' as suffix instead of prefix
//Check for label //Check for label
for (i = 0; i < result.labels.length; i++) { for (i = 0; i < result.labels.length; i++) {
if (expr.substring(1) === result.labels[i]) { if (expr.substring(1) === result.labels[i] || expr.substring(0, expr.length - 1) == result.labels[i]) {
return OPERAND_MEM_REG; return OPERAND_MEM_REG;
} }
} }
// it should remove either ONE '+' or ONE '-'
// else the operand is invalid
expr = expr.replace(/\+|\-/, '');
//Check for number //Check for number
if (!isNaN(Number(expr)) && Number(expr) === Math.floor(Number(expr))) { if (!isNaN(Number(expr)) && Number(expr) === Math.floor(Number(expr))) {
return OPERAND_MEM_REG; return OPERAND_MEM_REG;