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语言代码。 到此你是否就懂了黑客破解软件的原理了? 是否明白程序加密的重要性了? 是否懂了那些抄芯片的人工作内容是啥了吗? 所以现在是否恍然大悟了呢? 总之懂得单片机底层原理对我们理解程序执行还是很重要的,当然这也是编译原理的基础。

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

    关注

    6001

    文章

    43973

    浏览量

    620811
  • C语言
    +关注

    关注

    180

    文章

    7529

    浏览量

    128478
  • 文件
    +关注

    关注

    1

    文章

    540

    浏览量

    24402
  • keil
    +关注

    关注

    68

    文章

    1196

    浏览量

    165290
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48610
收藏 人收藏

    评论

    相关推荐

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

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

    简单C语言架构,很简单哦 !!!

    简单C语言架构,很简单哦。。。。{:4_95:}
    发表于 04-04 20:03

    简单C语言

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

    MATLAB语言C语言的区别

      MATLAB的底层是C写的,C的效率比MATLAB要高,但MATLAB语法简单多了而且简单,但执行效率不高MATLAB是用于特定的方面的
    发表于 11-30 16:19

    如何提高C语言程序的执行效率

    的事那么效率就高。下面说说如何提高C语言程序的执行效率。1、尽量避免调用延时函数没有带操作系统的程序只能在while(1)里面循环执行,如果在这里面调用大量的延时这样会很消耗CPU的资
    发表于 07-20 06:39

    聊聊stm32的入门学习路线

    绝大部分的stm32的学习者是在入门阶段的,所以今天我们就来聊聊stm32的入门学习路线。先来看个图,相信会有所了解。首先学习stm32 不管是C语言还是汇编肯定跑不了的所以C
    发表于 08-03 07:08

    C语言概述

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

    51单片机的编程语言程序设计步骤

    前言MCS-51单片机的编程语言可以是汇编语言也可以是高级语言(如C语言)。高级语言编程快捷,但
    发表于 11-10 08:17

    c语言指令执行过程是怎样的

    [STM32]STM32F407系列教程之三,c语言知识点巩固 指令执行过程
    发表于 12-09 06:31

    C语言的编译步骤

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

    C语言基本概念源文件

    1.C语言基本概念源文件:.c文件头文件:.h文件(head)C语言代码由源文件和头文件组成。返回值要和函数的声明值的类型对应2.写代码的
    发表于 12-15 07:29

    从完成C源文件编辑后到执行程序前需要哪些步骤

    一、选择题,可多选(每题3分,共12分)1、从完成C源文件编辑后,到执行程序前,需要进过那些步骤( )A、编译,运行B、编译,链接C、链接,运行D、预编译,编译2、下面哪些是标准
    发表于 02-28 06:18

    气动执行器拆解步骤

    本文主要阐述了气动执行器的拆解步骤
    发表于 01-21 16:08 1.1w次阅读

    简单聊聊C语言执行步骤

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

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

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