feat: implements sign extension operation for division

This commit is contained in:
Guy C
2025-02-25 21:37:18 +00:00
parent 70e023f27a
commit c9723f9359
3 changed files with 14 additions and 3 deletions

View File

@@ -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)