Linux汇编实例讲解(二)

该段代码为循环控制结构。其中start_loop只是一个标签,标记循环指令开始的位置。语句“cmpl $0, %eax”判断寄存器%eax中的值是否为0,如果为0则直接跳转到loop_exit指令处。如果不为0,则继续往下执行。这是因为我们使用0作为所有数字的结束标志,当然也可以换成别的。语句“incl %edi”表示将%edi寄存器中的值加1,这样在下一指令(“movl data_items(,%edi,4), %eax”)中可以得到下一个数字的地址,语句“cmpl %ebx, %eax”用来比较两个数字的大小,下一条语句“jle start_loop”则表示如果上一个比较结果是%eax中的值小于或等于%ebx中的值,则程序跳转到start_loop处,即程序循环的开始,,如果不是小于或等于的情况,则表示%eax中的数字大于%ebx中的数字,需要将%eax中的值放到%ebx寄存器中,因为最大值会作为程序退出时的状态码返回。

有的旅行是为了体验生活,感悟人生。

Linux汇编实例讲解(二)

相关文章:

你感兴趣的文章:

标签云: