Fixed a bug in the parser not setting an identifier when one is used with a CMP and fixed a bug in the example assembly program.

This commit is contained in:
2023-06-18 12:11:30 -05:00
parent 0eaa5527ea
commit c6e6e2c5dc
2 changed files with 9 additions and 3 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ _end:
; Returns: R2 - Contains the length of the string
strlen:
copy r2, 0 ; length
copy byte r4, [r1]
copy byte r3, [r1]
cmp r3, 0
jz end ;The string is zero length
loop:
+8 -2
View File
@@ -167,7 +167,7 @@ void HandleOpcode(void) {
opcode->Value.Mnemonic = isByte ? COPYAB : COPYA;
opcode->Lemexe = isByte ? "copyab" : "copya";
AdvanceParser();
ExpectIdentifier(0, ForwardParser);
}
else {
ExpectPuncuation(LBracket, ForwardParser);
@@ -208,12 +208,18 @@ void HandleOpcode(void) {
TokenClass class = PeekToken()->Class;
if (class == NumberClass || class & IdentifierClass) {
if (class == NumberClass) {
opcode->Value.Mnemonic = CMPI;
opcode->Lemexe = "CMPI";
AdvanceParser();
}
else if (class & IdentifierClass) {
opcode->Value.Mnemonic = CMPI;
opcode->Lemexe = "CMPI";
ExpectIdentifier(0, ForwardParser);
}
else {
ExpectRegister();
}