`

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

 

 

分享到:
评论

相关推荐

    简易C语言编译器Java源代码

    、for循环、while循环、支持scanf和printf以及一些复合语句。该程序的功能是:(1)词法分析;(2)语法分析;(3)产生中间代码四元式;(4)产生x86汇编代码。更神奇的是,这些过程都通过java的GUI来实现的,所有...

    C语言入门经典(第4版)--源代码及课后练习答案

    4.6.4 使用for循环限制输入 141 4.6.5 生成伪随机整数 143 4.6.6 再谈循环控制选项 145 4.6.7 浮点类型的循环控制变量 146 4.7 while循环 147 4.8 嵌套循环 150 4.9 嵌套循环和goto语句 153 4.10 do-while...

    从汇编语言到Windows内核编程

    2.1.1 for循环 2.1.2 do循环 2.1.3 while循环 2.2 C 语言判断与分支的反汇编 2.2.1 if-else判断分支 2.2.2 switch-case判断分支 2.3 C语言的数组与结构 2.4 C语言的共用体和枚举类型 第3章 练习反汇编C语言程序 3.1 ...

    【TakeLionOS第五课】TakeLionOS汇编与C语言自学笔记-第四课.rar

    这时候,我想看一下第二步生成的汇编语言代码。 因为本身就是研究操作系统的一部分,所以要研究底层的汇编语言。 结果发现是AT&T格式的汇编语言风格,而且大量使用汇编宏。 所以启用了GCC的编译选项-fno-...

    C语言讲义.doc

    9.6.1 递归的过程分析 48 9.6.2 递归的优点 52 9.6.3 递归的缺点 52 1 指针 52 1.1 指针 52 1.1.1 指针的概念 52 1.1.2 指针变量的定义 52 1.1.3 &取地址运算符 52 1.1.4 无类型指针 52 1.1.5 NULL 53 1.1.6 空指针...

    天书夜谈:从汇编语言到Windows内核编程

     2.1.1 for循环 15  2.1.2 do循环 16  2.1.3 while循环 17  2.2 C语言判断与分支的反汇编 18  2.2.1 if-else判断分支 18  2.2.2 switch-case判断分支 19  2.3 C语言的数组与结构 22  2.4 C语言的共用体和...

    天书夜读:从汇编语言到Windows内核编程(完整版一)

     2.1.1 for循环 15  2.1.2 do循环 16  2.1.3 while循环 17  2.2 C语言判断与分支的反汇编 18  2.2.1 if-else判断分支 18  2.2.2 switch-case判断分支 19  2.3 C语言的数组与结构 22  2.4 C语言的共用体和...

    天书夜读:从汇编语言到Windows内核编程(完整版 二)

     2.1.1 for循环 15  2.1.2 do循环 16  2.1.3 while循环 17  2.2 C语言判断与分支的反汇编 18  2.2.1 if-else判断分支 18  2.2.2 switch-case判断分支 19  2.3 C语言的数组与结构 22  2.4 C语言的共用体和...

    51单片机C语言编程基础及实例

    接上电复位电路,以及手动复位电路,分析复位工作原理 接配置:EA(PIN31)。说明原因。 发光二极的控制:单片机 I/O 输出 将一发光二极管 LED 的正极(阳极)接 P1.1,LED 的负极(阴极)接地 GND。只要 P1.1 输出...

    《你必须知道的495个C语言问题》

    《你必须知道的495个C语言问题》以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预...

    你必须知道的495个C语言问题

    1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16和int32。然后根据实际的机器环境把它们定义为int、short、long等类型。这样看来,所有的问题都解决了,是吗? 1.4 新的64位机上的64位类型...

    美国..现代编译原理C语言描述.高清版

    7.2.13 for循环 119 7.2.14 函数调用 120 7.3 声明 120 7.3.1 变量定义 120 7.3.2 函数定义 120 7.3.3 片段 121 程序设计:翻译成树 122 习题 123 第8章 基本块和轨迹 125 8.1 规范树 126 8.1.1 ESEQ的转换 126 ...

    揭秘数据解密的关键技术

    1.1 1字节码 1.1 1.1 代码和数据的区别 1.1 1.2 PE文件 第2章 识别汇编代码的高级模式 2.1 汇编中的常量、指针和变量——C语言中的常量、指针和变量 2.1.1 常量、指针和变量的定义 2.1.2 常量、指针和变量的实现机制...

    C语言程序设计(谭浩强)第三版

     5.4用for 语句实现循环  5.5循环的嵌套  5.6几种循环的比较  5.7改变循环执行的状态  5.7.1用break语句提前终止循环  5.7.2用continue语句提前结束本次循环  5.7.3break语句和continue语句的区别  5.8循环...

    编译原理 C编译器

    可将C语言的裴波纳契和pi.c的翻译为汇编语言。...3编译器演示程序,可将C语言子集测试程序编译为目标代码——汇编程序,用汇编器转换为二进制程序后运行无误,如斐波那契数列程序,应能翻译为正确的汇编程序。

    编译原理简易C编译器

    只能实现斐波那契数列,没有实现pi.c,得分五分 ...3编译器演示程序,可将C语言子集测试程序编译为目标代码——汇编程序,用汇编器转换为二进制程序后运行无误,如斐波那契数列程序,应能翻译为正确的汇编程序。

    《大学计算机基础》程序设计-综合习题.doc

    A 汇编语言程序 B BASIC程序 C 机器语言程序 D C语言程序 21. 由二进制编码构成的语言是【 】。 A 汇编语言 B 高级语言 C 甚高级语言 D 机器语言 22. 软件与程序的区别是【 】。 A 程序价格便宜、软件价格昂贵 B ...

    嵌入式Linux C编程入门(第2版) PPT

    5.3.2 for循环语句 149 5.3.3 break和continue语句 151 5.3.4 arm-linux循环语句应用实例 152 5.4 goto语句 154 5.4.1 goto语句语法 154 5.4.2 arm-linux中goto语句应用实例 154 5.5 函数的定义...

Global site tag (gtag.js) - Google Analytics