fix: evaluate all function call arguments before setting registers

This commit is contained in:
2025-02-28 00:27:26 +00:00
parent c31dd9de25
commit 41f76e50e0

View File

@@ -392,8 +392,14 @@ object asmGenerator {
var chain = Chain.empty[AsmLine] var chain = Chain.empty[AsmLine]
val microWacc.Call(target, args) = call val microWacc.Call(target, args) = call
argRegs.zip(args).foldMap { (reg, expr) => argRegs
.zip(args)
.map { (reg, expr) =>
chain ++= evalExprOntoStack(expr) chain ++= evalExprOntoStack(expr)
reg
}
.reverse
.foreach { reg =>
chain += stack.pop(Register(Q64, reg)) chain += stack.pop(Register(Q64, reg))
} }