diff options
| -rw-r--r-- | asm.peg | 1 | ||||
| -rw-r--r-- | main.c | 1 | ||||
| -rw-r--r-- | minias.h | 7 |
3 files changed, 9 insertions, 0 deletions
@@ -30,6 +30,7 @@ jmp = "jmp" ws i:ident mod-rm-binop = "add" a:mod-rm-binop-args { $$ = a; $$.kind = ASM_ADD; } | "and" a:mod-rm-binop-args { $$ = a; $$.kind = ASM_AND;} + | "or" a:mod-rm-binop-args { $$ = a; $$.kind = ASM_OR;} | "sub" a:mod-rm-binop-args { $$ = a; $$.kind = ASM_SUB;} | "xor" a:mod-rm-binop-args { $$ = a; $$.kind = ASM_XOR;} @@ -259,6 +259,7 @@ static void assemble() { break; case ASM_ADD: case ASM_AND: + case ASM_OR: case ASM_SUB: case ASM_XOR: { @@ -49,6 +49,7 @@ typedef enum { ASM_LEAVE, ASM_ADD, ASM_AND, + ASM_OR, ASM_SUB, ASM_XOR, // Registers, order matters. @@ -138,7 +139,10 @@ typedef struct { } ModRMBinop; typedef ModRMBinop Add; +typedef ModRMBinop And; +typedef ModRMBinop Or; typedef ModRMBinop Sub; +typedef ModRMBinop Xor; union Parsev { AsmKind kind; @@ -148,6 +152,9 @@ union Parsev { Memarg memarg; ModRMBinop modrmbinop; Add add; + And and; + Or or; + Xor xor; Sub sub; Jmp jmp; Byte byte; |
