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位置继续执行,即下一轮循环

猜你喜欢

转载自becomebetter.iteye.com/blog/2205760
今日推荐