C语言汇编代码分析(for循环)

请看下面的例子



 

 

图片左边为C语言代码,右边为对应的汇编代码,汇编代码有点多,我们着重关注用红色矩形框住的区域:

 

movl $0, %ecx; 将0赋值给%ecx寄存器,相当于源码中的第6行的i=0表达式,注意汇编采用%ecx作为循环

            ;计数寄存器,相当于c源码中的变量i的作用

 

.L2; 汇编中称为标记,和c语言goto语句的参数意义相同,用于语句跳转时的位置标记

 

addl $1, %ecx; 将%ecx加1,相当于源码中的i++

 

cmpl $1000, %ecx;比较加1后%ecx寄存器的值与1000的大小,相当于源码中的 i < 1000表达式

 

jne .L2; 意思是上面一条语句判断出%ecx的值不等于1000,则跳转到.L2位置继续执行,即下一轮循环

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值