C语言冒泡算法汇编解读

王晓蛮 2015-06-24 05:38:39

3: void _sort(int arr[], int n ) {
004010B0 push ebp
004010B1 mov ebp,esp
004010B3 sub esp,50h
004010B6 push ebx
004010B7 push esi
004010B8 push edi
004010B9 lea edi,[ebp-50h]
004010BC mov ecx,14h
004010C1 mov eax,0CCCCCCCCh
004010C6 rep stos dword ptr [edi]
4: int len = n,
004010C8 mov eax,dword ptr [ebp+0Ch]
004010CB mov dword ptr [ebp-4],eax
5: _i = 0,
004010CE mov dword ptr [ebp-8],0
6: _j = 0,
004010D5 mov dword ptr [ebp-0Ch],0
7: _t = 0;
004010DC mov dword ptr [ebp-10h],0
8: // len = sizeof(arr) / sizeof(int);
9: for(_i ; _i < len; _i++) {
004010E3 jmp _sort+3Eh (004010ee)
004010E5 mov ecx,dword ptr [ebp-8]
004010E8 add ecx,1
004010EB mov dword ptr [ebp-8],ecx
004010EE mov edx,dword ptr [ebp-8]
004010F1 cmp edx,dword ptr [ebp-4]
004010F4 jge _sort+0A1h (00401151)
10: for(_j = _i; _j < len; _j++) {
004010F6 mov eax,dword ptr [ebp-8]
004010F9 mov dword ptr [ebp-0Ch],eax
004010FC jmp _sort+57h (00401107)
004010FE mov ecx,dword ptr [ebp-0Ch]
00401101 add ecx,1
00401104 mov dword ptr [ebp-0Ch],ecx
00401107 mov edx,dword ptr [ebp-0Ch]
0040110A cmp edx,dword ptr [ebp-4]
0040110D jge _sort+9Fh (0040114f)
11: if (arr[_i] > arr[_j]) {
0040110F mov eax,dword ptr [ebp-8]
00401112 mov ecx,dword ptr [ebp+8]
00401115 mov edx,dword ptr [ebp-0Ch]
00401118 mov esi,dword ptr [ebp+8]
0040111B mov eax,dword ptr [ecx+eax*4]
0040111E cmp eax,dword ptr [esi+edx*4]
00401121 jle _sort+9Dh (0040114d)
12: _t = arr[_j];
00401123 mov ecx,dword ptr [ebp-0Ch]
00401126 mov edx,dword ptr [ebp+8]
00401129 mov eax,dword ptr [edx+ecx*4]
0040112C mov dword ptr [ebp-10h],eax
13: arr[_j] = arr[_i];
0040112F mov ecx,dword ptr [ebp-0Ch]
00401132 mov edx,dword ptr [ebp+8]
00401135 mov eax,dword ptr [ebp-8]
00401138 mov esi,dword ptr [ebp+8]
0040113B mov eax,dword ptr [esi+eax*4]
0040113E mov dword ptr [edx+ecx*4],eax
14: arr[_i] = _t;
00401141 mov ecx,dword ptr [ebp-8]
00401144 mov edx,dword ptr [ebp+8]
00401147 mov eax,dword ptr [ebp-10h]
0040114A mov dword ptr [edx+ecx*4],eax
15: }
16: }
0040114D jmp _sort+4Eh (004010fe)
17: }
0040114F jmp _sort+35h (004010e5)
18: //return ;
19: }



请各位大礼告知如何解读汇编代码。
...全文
64 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly_dragon_fly 2015-06-24
  • 打赏
  • 举报
回复
上面有c还要看汇编?
赵4老师 2015-06-24
  • 打赏
  • 举报
回复
《The Intel 64 and IA-32 Architectures Software Developer's Manual》

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧