C语言 for 循环反汇编分分析

本文详细解析了C语言中for循环的汇编代码,包括初始化、自增、条件判断和printf函数调用的过程。

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值