Add IDiv instruction for signed integer division

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
2020-02-25 13:44:03 -05:00
parent 5619c9dc87
commit 795a890502
7 changed files with 34 additions and 9 deletions

View File

@@ -62,13 +62,22 @@ Value -> Value:
| 'LPAREN' Value 'RPAREN' 'U16' { Value::Addr(Box::new($2), IntSize::U16) }
| 'LPAREN' Value 'RPAREN' 'U32' { Value::Addr(Box::new($2), IntSize::U32) }
| 'LPAREN' Value 'RPAREN' 'U64' { Value::Addr(Box::new($2), IntSize::U64) }
//| 'LBRACKET' ArrayValues 'RBRACKET' { Value::Array($2) }
;
/*
ArrayValues -> Vec<Value>:
ArrayValues Value { $1.push($2); $1 }
| { Vec::new() }
;
*/
Inst -> Inst:
'ADD' Value 'COMMA' Value { Inst::Add($2, $4) }
| 'SUB' Value 'COMMA' Value { Inst::Sub($2, $4) }
| 'MUL' Value 'COMMA' Value { Inst::Mul($2, $4) }
| 'DIV' Value 'COMMA' Value { Inst::Div($2, $4) }
| 'IDIV' Value 'COMMA' Value { Inst::IDiv($2, $4) }
| 'MOD' Value 'COMMA' Value { Inst::Mod($2, $4) }
| 'AND' Value 'COMMA' Value { Inst::And($2, $4) }
| 'OR' Value 'COMMA' Value { Inst::Or($2, $4) }