public override void Compile(CompilerBase state) { var cid = Guid.NewGuid(); var beginLabel = $"{cid}-begin"; var endLabel = $"{cid}-end"; var indexName = string.IsNullOrEmpty(IndexName)?$"<{cid}-index>": IndexName; state.EnterLoop(beginLabel, endLabel); state.VariableDefine(indexName); state.InsertLC(new IntegerValue(0)); state.InsertSD(indexName); state.InsertLabel(beginLabel); state.InsertLD(indexName); mCount.Compile(state); state.InsertLT(); state.InsertJMPN(endLabel); mLoopBlock.Compile(state); state.InsertLD(indexName); state.InsertLC(new IntegerValue(1)); state.InsertADD(); state.InsertSD(indexName); state.InsertJMP(beginLabel); state.InsertLabel(endLabel); state.ExitLoop(); }
public override void Compile(CompilerBase state) { mExpression1.Compile(state); mExpression2.Compile(state); state.InsertLT(); }