feat: implements sign extension operation for division
This commit is contained in:
@@ -237,8 +237,8 @@ object asmGenerator {
|
||||
}
|
||||
|
||||
case BinaryOp(x, y, op) =>
|
||||
chain ++= evalExprOntoStack(x)
|
||||
chain ++= evalExprOntoStack(y)
|
||||
chain ++= evalExprOntoStack(x)
|
||||
|
||||
chain += stack.pop(RAX)
|
||||
|
||||
@@ -251,11 +251,21 @@ object asmGenerator {
|
||||
chain += stack.push(RAX)
|
||||
|
||||
case BinaryOperator.Div =>
|
||||
// chain += stack.pop(RDX)
|
||||
// chain += stack.pop(RAX)
|
||||
// chain += stack.push(RDX)
|
||||
// chain += stack.push(RAX)
|
||||
chain += CDQ()
|
||||
chain += Divide(stack.head(SizeDir.Word))
|
||||
chain += stack.drop()
|
||||
chain += stack.push(RAX)
|
||||
|
||||
case BinaryOperator.Mod =>
|
||||
// chain += stack.pop(RDX)
|
||||
// chain += stack.pop(RAX)
|
||||
// chain += stack.push(RDX)
|
||||
// chain += stack.push(RAX)
|
||||
chain += CDQ()
|
||||
chain += Divide(stack.head(SizeDir.Word))
|
||||
chain += stack.drop()
|
||||
chain += stack.push(RDX)
|
||||
|
||||
Reference in New Issue
Block a user