0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简单聊聊C语言执行步骤

CHANBAEK 来源:落木青云 作者:落木青云 2023-03-22 16:14 次阅读

简单聊聊C语言执行步骤

前面写的那篇关于了解单片机底层逻辑文章因为涉及到“深奥”汇编语言所以看的人没多少,理解了的朋友估计就更少了吧,最后剩下两个问题也一直没写,今天就做个了结吧。 我们初学C语言时老师肯定讲过C语言的执行过程:预处理——编译——汇编——链接。 就这四个步骤,说简单吧,应该就是贼简单的; 说复杂呢,可以写一本书,幸好已经有前辈写了关于这一部分内容的经典巨著了。 所以今天又来推荐去读书的,这本书被称为龙书,叫做《编译原理》,值得编程人员去读,特别是计算机专业的研究生更值得一看了。 我写的内容绝对不会比书中写得详细具体,所以今天这里就简单说吧,用一张图说明今天所有内容:

wKgaomQauEGAUVZoAAB3xuBWswQ923.jpg


C语言程序执行流程图

wKgaomQauEGAbEffAABA_x-Fx0o326.jpg

英文原图

上图已经很清楚的说明了C语言转化汇编的方法以及汇编转机器语言的方法了,所以问题可算是over了。

是否更加云里雾里

图已看,问题关系也说明了,但更迷糊了不? 其实随便一个C语言编译器都能帮我们理解这个过程。 因为只要编译C语言就不得不具备图中的这些工具,不管是你用的是VC6.0,还是VS,或是GCC,甚至是Keil

因为我们这里是讲单片机所以接下来我们就以keil为例做个说明,先上个图:

wKgZomQauEGAdloGAAHVIicdki8510.jpg

我们编译通过的程序编译器软件会自动生成对应的文件,甚至在这个生成的文件中机器代码都已经给到了我们,并且哪句C语言代码对应的汇编指令都一一对应了。 所以通过这个文件我们就可以很清楚的知道C语言与汇编语言的对应关系,汇编语言与机器语言的对应关系。 通过分析这个文件就能帮我们更好的理解单片机的执行过程,也有助于我们进一步理解汇编语言。 到最后我们的程序成功编译之后我们通常都是把HEX文件下载到单片机中运行,那hex文件又是怎么回事呢?

HEX文件解读

在这里hex文件就是我们程序编译出来的目标文件,它存储的是一些按一定规则组合起来的机器代码。 就像最原始的机器代码是以纸为媒介存储一样,hex文件也相当于机器代码的一种存储媒介,当我们要将文件下载到单片机时,下载软件会对其进行解析,最后将其存储的机器代码装载到单片机的flash中。 当然HEX文件不止一种规则,不过我们一般用到的规则都是intel公司的,其他的规则可自行了解。 下面以intel公司的hex文件规则进行说明。

举例一段HEX内容说明:

:0E00030075801175902275A03375B04480FE93
:030000000020011EA
:0C001100787FE4F6D8FD7581070200033B
:00000001FF

解释:冒号为每行数据的开始符号; 蓝色表示此行数据长度,十六进制,如0E就是14; 红色是数据存放的地址,如0003; 粉红色是表示数据类型,00表示数据记录,01表示文件结束,02表示扩展段地址记录,03表示开始段地址记录,04表示扩展线性地址记录,05表示开始线性地址记录; 后面紧跟着的是N位数据,长度由蓝色的长度位决定; 天蓝色为校验位。

wKgZomQauEGAfHS5AAAcU-chaPg679.jpg

对比这张图片内容和上一张keil软件生成的文件图片你发现了说明信息

我想通过今天的内容你心中应该对单片机代码执行过程有一定了解了吧? 如果还是不懂,就多去调试一下代码吧,调多了你自然而然就懂了。 另外,通过机械代码我们也可以推导出汇编程序,进而可以编出C语言代码。 到此你是否就懂了黑客破解软件的原理了? 是否明白程序加密的重要性了? 是否懂了那些抄芯片的人工作内容是啥了吗? 所以现在是否恍然大悟了呢? 总之懂得单片机底层原理对我们理解程序执行还是很重要的,当然这也是编译原理的基础。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44553

    浏览量

    634771
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136714
  • 文件
    +关注

    关注

    1

    文章

    565

    浏览量

    24733
  • keil
    +关注

    关注

    68

    文章

    1212

    浏览量

    166852
  • 编译器
    +关注

    关注

    1

    文章

    1624

    浏览量

    49113
收藏 人收藏

    评论

    相关推荐

    C语言变成可执行文件的四大步骤

    C语言变成最终的可执行文件,需要经过四步。
    发表于 10-18 10:37 5569次阅读

    聊聊Rust与C语言交互的具体步骤

    rust FFI 是rust与其他语言互调的桥梁,通过FFI rust 可以有效继承 C 语言的历史资产。本期通过几个例子来聊聊rust与 C
    发表于 07-06 11:15 1706次阅读

    简单C语言

    简单C语言简单C语言简单
    发表于 07-14 20:12

    C语言概述

    简单C语言程序 1.5 运行C程序的步骤和方法1.1计算机与程序、程序设计语言1.1计算机与程序、程序设计
    发表于 09-01 06:41

    C语言的编译步骤

    嵌入式C语言开发入门——程序编译计算机语言发展过程C语言编译步骤GCC编译命令程序
    发表于 12-15 08:21

    C语言简单概述

    C语言简介C语言简介C语言简介C
    发表于 11-20 14:14 0次下载

    pid算法原理和C语言简单实现

    pid算法原理和C语言简单实现,有兴趣的可以看看
    发表于 12-07 18:34 9次下载

    单片机蜂鸣器简单发声程序【C语言版】

    单片机蜂鸣器简单发声程序【C语言版】单片机蜂鸣器简单发声程序【C语言版】单片机蜂鸣器
    发表于 12-29 13:53 0次下载

    C语言教程之简单计算器

    C语言教程之简单计算器,很好的C语言资料,快来学习吧。
    发表于 04-25 09:38 0次下载

    简单实用——C语言入门程序练习

    C语言入门程序练习,简单实用
    发表于 04-04 10:14 31次下载

    设计模式:简单工厂模式——基于C语言

    设计模式:简单工厂模式——基于C语言背景 看了刘伟、胡志刚的《C#设计模式(第二版)》——清华大学出版社,利用里面阐述的简单工厂模式创造一
    发表于 01-13 13:45 6次下载
    设计模式:<b class='flag-5'>简单</b>工厂模式——基于<b class='flag-5'>C</b><b class='flag-5'>语言</b>

    c语言|简单的状态机

    不管做什么或者实现什么功能,必定会有实现需求的步骤简单理解就是在某个状态下做某事,这就很符合C语言面向过程的特点,个人认为面向对象其实是面向过程的封装,封装的好处自然就是符合人的思维
    的头像 发表于 06-14 09:13 741次阅读

    简单聊聊C语言执行步骤

    我们初学C语言时老师肯定讲过C语言执行过程:预处理——编译——汇编——链接。
    发表于 07-31 11:28 1202次阅读
    <b class='flag-5'>简单</b><b class='flag-5'>聊聊</b><b class='flag-5'>C</b><b class='flag-5'>语言</b>的<b class='flag-5'>执行</b><b class='flag-5'>步骤</b>

    c语言源程序main函数的位置

    理解C语言程序的执行过程。 C语言程序的执行过程可以简单
    的头像 发表于 11-24 10:23 2511次阅读

    oracle执行sql查询语句的步骤是什么

    。以下是对每个步骤的详尽、详实、细致的解释。 编写SQL语句: SQL(结构化查询语言)是一种用于与数据库进行通信的标准语言。在使用Oracle执行SQL查询之前,首先需要编写SQL语
    的头像 发表于 12-06 10:49 958次阅读