feat: x86 code generation implementation without runtime checking #29

Merged
gk1623 merged 58 commits from asm-gen into master 2025-02-27 18:54:57 +00:00
11 changed files with 575 additions and 225 deletions
Showing only changes of commit f15530149e - Show all commits

View File

@@ -244,7 +244,10 @@ object asmGenerator {
op match { op match {
case BinaryOperator.Add => chain += Add(stack.head(SizeDir.Word), EAX) case BinaryOperator.Add => chain += Add(stack.head(SizeDir.Word), EAX)
case BinaryOperator.Sub => chain += Subtract(stack.head(SizeDir.Word), EAX) case BinaryOperator.Sub =>
chain += Subtract(EAX, stack.head(SizeDir.Word))
chain += stack.drop()
chain += stack.push(RAX)
case BinaryOperator.Mul => case BinaryOperator.Mul =>
chain += Multiply(EAX, stack.head(SizeDir.Word)) chain += Multiply(EAX, stack.head(SizeDir.Word))
chain += stack.drop() chain += stack.drop()

View File

@@ -96,7 +96,7 @@ class ParallelExamplesSpec extends AnyFlatSpec with BeforeAndAfterAll with Paral
"^.*wacc-examples/valid/IO/print.*$", "^.*wacc-examples/valid/IO/print.*$",
// "^.*wacc-examples/valid/IO/read.*$", // "^.*wacc-examples/valid/IO/read.*$",
"^.*wacc-examples/valid/IO/IOLoop.wacc.*$", "^.*wacc-examples/valid/IO/IOLoop.wacc.*$",
"^.*wacc-examples/valid/IO/IOSequence.wacc.*$", // "^.*wacc-examples/valid/IO/IOSequence.wacc.*$",
"^.*wacc-examples/valid/pairs.*$", "^.*wacc-examples/valid/pairs.*$",
"^.*wacc-examples/valid/runtimeErr.*$", "^.*wacc-examples/valid/runtimeErr.*$",
"^.*wacc-examples/valid/scope.*$", "^.*wacc-examples/valid/scope.*$",