feat: implement basic while loop generation in asmGenerator
This commit is contained in:
parent
2bed722a4f
commit
909114bdce
@ -105,6 +105,18 @@ object asmGenerator {
|
||||
elseBranch.flatMap(generateStmt) ++
|
||||
List(LabelDef(endLabel))
|
||||
}
|
||||
case While(cond, body) => {
|
||||
val startLabel = labelGenerator.getLabel()
|
||||
val endLabel = labelGenerator.getLabel()
|
||||
List(LabelDef(startLabel)) ++
|
||||
evalExprIntoReg(cond, Register(RegSize.R64, RegName.AX)) ++
|
||||
List(
|
||||
Compare(Register(RegSize.R64, RegName.AX), ImmediateVal(0)),
|
||||
Jump(LabelArg(endLabel), Cond.Equal)
|
||||
) ++
|
||||
body.flatMap(generateStmt) ++
|
||||
List(Jump(LabelArg(startLabel)), LabelDef(endLabel))
|
||||
}
|
||||
case _ => List()
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user