bug: 80 is a valid register name
Any string X<smth>
is a fine register name as soon as <smth>
is a key of the register enumeration, but it does have [0-7]
and 15
as keys (in order to get the register name).
Those invalid names leads to %eax
because of integer operations in _processRegister
.
private _processRegister(ctx : any, instructionBytes : Array<number>, userArg : string, position : number) {
let regName = userArg.substr(1) // Remove the '%'
if(!ctx.registersEnum.hasOwnProperty(regName)) {
throw new CompilationError(this.line, "Register '" + userArg + "' does not exist")
}