switch结构分析
C语言源代码:
#include <stdio.h>
int main()
{
int nNum = 0;
scanf("%d",&nNum);
switch(nNum)
{
case 1:
{
printf("1 \r\n");
break;
}
case 2:
{
printf("2 \r\n");
break;
}
case 3:
{
printf("3 \r\n");
break;
}
case 4:
{
printf("4 \r\n");
break;
}
default:
{
printf("default \r\n");
break;
}
return 0;
}
}
逆向反汇编解析:
switch流程分支图如下:
查看分支代码:
00401058地址处的代码跳转如下:
上图连续四个标号地址,分别对应着4个case对应的代码,该数组中保存了4个值,用表索引正好也是0-3,也就是可以通过var_8中对应的值进行访问。