diff --git a/src/main/wacc/backend/asmGenerator.scala b/src/main/wacc/backend/asmGenerator.scala index 71a99b5..c900756 100644 --- a/src/main/wacc/backend/asmGenerator.scala +++ b/src/main/wacc/backend/asmGenerator.scala @@ -404,10 +404,16 @@ object asmGenerator { var chain = Chain.empty[AsmLine] val microWacc.Call(target, args) = call - argRegs.zip(args).foldMap { (reg, expr) => - chain ++= evalExprOntoStack(expr) - chain += stack.pop(Register(Q64, reg)) - } + argRegs + .zip(args) + .map { (reg, expr) => + chain ++= evalExprOntoStack(expr) + reg + } + .reverse + .foreach { reg => + chain += stack.pop(Register(Q64, reg)) + } args.drop(argRegs.size).foldMap { chain ++= evalExprOntoStack(_)