for 循环反汇编分分析
C语言
#include <stdio.h>
int main() {
for (int i = 0; i < 5; i++) {
printf("%d \n", i);
}
return 0;
}
汇编语言
; 初始化表达式 相当于 i = 0
00534505 mov dword ptr [ebp-8],0
0053450C jmp 00534517 ; 无条件跳转 地址是哪跳转哪
; 相当于i++
0053450E mov eax,dword ptr [ebp-8]
00534511 add eax,1
00534514 mov dword ptr [ebp-8],eax
; 条件表达式
00534517 cmp dword ptr [ebp-8],5 ; cmp compare(比较)
0053451B jge 00534530 ; jmp great equal 什么意思呢 大于等于上面的5 的时候跳转
; printf函数调用
0053451D mov eax,dword ptr [ebp-8]
00534520 push eax
00534521 push 537BE4h
00534526 call 005313B1
0053452B add esp,8
0053452E jmp 0053450E
; 循环外部语句
00534530 xor eax,eax
00534532 pop edi
本文详细解析了C语言中for循环的汇编代码,包括初始化、自增、条件判断和printf函数调用的过程。
819

被折叠的 条评论
为什么被折叠?



