本文整理汇总了C#中CodeGeneration.CGenState.InLoop方法的典型用法代码示例。如果您正苦于以下问题:C# CGenState.InLoop方法的具体用法?C# CGenState.InLoop怎么用?C# CGenState.InLoop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CodeGeneration.CGenState
的用法示例。
在下文中一共展示了CGenState.InLoop方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CGenStmt
public override void CGenStmt(Env env, CGenState state) {
// Init
this.Init.Map(_ => CGenExprStmt(env, _, state));
Int32 start_label = state.RequestLabel();
Int32 finish_label = state.RequestLabel();
Int32 continue_label = state.RequestLabel();
// start:
state.CGenLabel(start_label);
// test cont
this.Cond.Map(_ => {
Reg ret = CGenExprStmt(env, _, state);
CGenTest(ret, state);
return ret;
});
// jz finish
state.JZ(finish_label);
// Body
state.InLoop(continue_label, finish_label);
this.Body.CGenStmt(env, state);
state.OutLabels();
// continue:
state.CGenLabel(continue_label);
// Loop
this.Loop.Map(_ => CGenExprStmt(env, _, state));
// jmp start
state.JMP(start_label);
// finish:
state.CGenLabel(finish_label);
}