04 2020 档案
摘要:上一篇说到switch语句后面通常会有一个br语句,而在switch和br之间可能会有不定量条件选择语句或default块,这是因为case的判断值不为整数或是很大的整数造成无法用数组下标的形式来规入switch跳转表数组,如果要是case的判断值全都是大整数或是非整数的话,那么switch也就不存
阅读全文
摘要:在switch语句的解析上大概花费了四个公休日和无数的零散时间,写了删,删了写,来来回回费劲,直到思路慢慢理清,总算完成代码。 在IL的switch语句中,operand是一个数组,执行的动作是从栈上pop出一个判断值,并以此数值为下标跳转到数组中的offset。原则上这可以跳转到代码的任何地方,未
阅读全文
摘要:清明节难得没有打扰的三天假期,全部贡献在这了。对于IL翻译回C#说实话,虽然有心理准备,但还是小瞧了它的难度,现在的卡点在流程控制语句上。 C#的编译器有两个很重要的原则,一是平栈原则,就是尽量少的使用栈,二是顺序原则,就是IL代码尽量按书写顺序从上至下从左至右编排,所见即所得 ,即使在编译时选择了
阅读全文