动态线条
动态线条end

汇编:C语言do-while转汇编

do-while的基本使用格式

do{
	//功能代码
}while(表达式);

C语言代码

#include <stdio.h>

void F(int n){
	int i = 0;
	do{
		i++;
		printf("%d", i);
	} while (i < n);
}

int main(){
	F(10);
	return 0;
}

对应汇编代码

image-20220216153136170

00A413C0  push        ebp  
00A413C1  mov         ebp,esp  
00A413C3  sub         esp,0CCh  
00A413C9  push        ebx  
00A413CA  push        esi  
00A413CB  push        edi  
00A413CC  lea         edi,[ebp+FFFFFF34h]  
00A413D2  mov         ecx,33h  
00A413D7  mov         eax,0CCCCCCCCh  
00A413DC  rep stos    dword ptr es:[edi]  
00A413DE  mov         dword ptr [ebp-8],0  
00A413E5  mov         eax,dword ptr [ebp-8]  
00A413E8  add         eax,1  
00A413EB  mov         dword ptr [ebp-8],eax  
00A413EE  mov         esi,esp  
00A413F0  mov         eax,dword ptr [ebp-8]  
00A413F3  push        eax  
00A413F4  push        0A45858h  
00A413F9  call        dword ptr ds:[00A49114h]  
00A413FF  add         esp,8  
00A41402  cmp         esi,esp  
00A41404  call        00A4113B  
00A41409  mov         eax,dword ptr [ebp-8]  
00A4140C  cmp         eax,dword ptr [ebp+8]  
00A4140F  jl          00A413E5  
00A41411  pop         edi  
00A41412  pop         esi  
00A41413  pop         ebx  
00A41414  add         esp,0CCh  
00A4141A  cmp         ebp,esp  
00A4141C  call        00A4113B  
00A41421  mov         esp,ebp  
00A41423  pop         ebp  
00A41424  ret  

综上可以看出,do-while的汇编代码是比较简洁的。因此,效率也相对较高。

posted @ 2022-02-16 15:34  v1v1v1  阅读(145)  评论(0编辑  收藏  举报