1. for语句
for(int i=0;i<10;i++)
{
c=c+i; //其中c为局部变量
}
1. MOV DWORD PTR SS:[EBP-8],0 ; 给i赋值0,
2. JMP SHORT Console.00401063 ; 跳转到判断部分第6行
3. MOV ECX,DWORD PTR SS:[EBP-8] ; 跳转到将i的值赋给ecx
4. ADD ECX,1 ; 让ecx自增
5. MOV DWORD PTR SS:[EBP-8],ECX ;将ecx的值送回给i
6. CMP DWORD PTR SS:[EBP-8],0A ; 拿i和0A(10)比较
7. JGE SHORT Console.00401074 ; 不小于则终止循环,跳到第12行
8. MOV EDX,DWORD PTR SS:[EBP-4] ; 将c移至edx
9. ADD EDX,DWORD PTR SS:[EBP-8] ;将i累加到edx
10. MOV DWORD PTR SS:[EBP-4],EDX ; 将edx送回到c
11. JMP SHORT Console.0040105A ; 跳转至第3行循环
12. 之后的语句
2. while
int a=0;
while (a<50)
{
a++;
}
1. MOV DWORD PTR SS:[EBP-4],0 ;给a赋值0
2. CMP DWORD PTR SS:[EBP-4],32 ;拿a与32h(50)比较
3. JGE SHORT Console.00401060 ;小于则跳转出while第8行
4. MOV EAX,DWORD PTR SS:[EBP-4] ;将a送到eax
5. ADD EAX,1 ;让eax自增
6. MOV DWORD PTR SS:[EBP-4],EAX ;将eax送回到a
7. JMP SHORT Console.0040104F ;跳转到第2行实现循环
8. 下一个语句
while (true)
{
int c=0;
}
1. MOV ECX,1 ;将1移到ecx (注意寄存器是编译器按情况选择的)
2. TEST ECX,ECX ;测试ecx(位与操作只影响标志寄存器)
3. JE SHORT Console.00401072 ;跳转出while到第6行
4. MOV DWORD PTR SS:[EBP-8],0 ;将0送到c
5. JMP SHORT Console.00401060 ;跳转到第1行实现循环
6. 下一个语句