下面的代码给出了一个开关语句中根据枚举类型值进行分支选择的例子。回忆一下,(:语言中枚 举类型只是一种引人一组与整数值相对应的名字的方法。默认情况下,值是从0向上依次赋给名 字的。在我们的代码中,省略了与各种情况标号相对应的动作。
1 /* Enumerated type creates set of constants numbered 0 and upward */ 2 typedef enum {MODE.A, MODE.B, M0DE_C, MODE.D, M0DE_E> mode.t; 3 4 long switch3(long *p1, long *p2, mode_t action) 5 { ^ 6 long result = 0; 7 switch(action) { 8 case M0DE_A: 9 10 case M0DE_B: 11 12 case M0DE_C: 13 14 case M0DE_D: 15 16 case M0DE_E: 17 18 default: 19 20 } 21 return result; 22 }
产生的实现各个动作的汇编代码部分如图3-52所示。注释指明了参数位置,寄存器值,以及各个跳转目的的情况标号。
填写C代码中缺失的部分。代码包括落人其他情况的情况,试着重建这个情况。