Example #1
0
            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();
            }
Example #2
0
 public override void Compile(CompilerBase state)
 {
     state.InsertLD(Name);
 }