ABT.WhileStmt.CGenStmt C# (CSharp) Метод

CGenStmt() публичный метод

public CGenStmt ( Env env, CGenState state ) : void
env Env
state CodeGeneration.CGenState
Результат void
        public override void CGenStmt(Env env, CGenState state) {
            Int32 start_label = state.RequestLabel();
            Int32 finish_label = state.RequestLabel();

            // start:
            state.CGenLabel(start_label);

            // test Cond
            Reg ret = CGenExprStmt(env, this.Cond, state);
            CGenTest(ret, state);

            // jz finish
            state.JZ(finish_label);

            // Body
            state.InLoop(start_label, finish_label);
            this.Body.CGenStmt(env, state);
            state.OutLabels();

            // jmp start
            state.JMP(start_label);

            // finish:
            state.CGenLabel(finish_label);

        }
    }