编译器是将“一种语言(高级语言)”翻译为“另一种语言(低级语言)”的程序。

编译器能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式,这个过程称为编译。

一个编译器的主要工作流程:

  1. 源代码 (Source Code)
  2. 预处理器 (Pre-Processor)
  3. 编译器 (Compiler)
  4. 目标代码 (Object Code)
  5. 链接器 (Linker)
  6. 可执行程序 (Executables)

源代码通常是高级语言编写的,如C、C++、Java等,高级语言便于程序员编写、阅读、交流、维护,相对而言,机器语言则是计算机能直接解读、运行的。可执行程序的内部是一系列计算机指令和数据的集合,它们都是二进制形式的,CPU 可以直接识别,但是对于程序员,它们非常晦涩,难以记忆和使用。

以C语言为例,在不同的平台下有不同的编译器:

  • Windows 常见的微软编译器cl.exe,被集成在 Visual Studio 中,一般不单独使用;
  • Linux 下常用的是 GUN 组织开发的 GCC;
  • Mac 下常用的是 LLVM/Clang,被集成在 Xcode 中。

一个C程序编译的过程:GCC编译C语言程序的全过程

在计算机发展的初期,程序员就是使用二进制指令来编写程序的。但直接使用二进制指令编程对程序员来说简直是噩梦,尤其是当程序比较大的时候,不但编写麻烦,需要频繁查询指令手册,还非常容易出错。另外,用二进制指令编程步骤繁琐,要考虑各种边界情况和底层问题,开发效率十分低下。

编译器不识别stm指令_编译器简介相关推荐

  1. 设计一个处理两种类型地址的地址簿程序_编译器设计-符号表-中间代码生成

    编译器设计-符号表-中间代码生成 Compiler Design - Symbol Table Compiler - Intermediate Code Generation 一.Compiler D ...

  2. 程序解释器忽略不执行的代码部分_编译器和解释器各有什么特点与区别

    编译器和解释器各有什么特点与区别 这是我们编译原理老师前几天发在在线学习平台上(没办法,因为肺炎,都只能搞个在线学习了)的一个课前讨论问题,写着写着就发现好像写的有点多了,不好发布在平台上了,于是就干 ...

  3. mips sw指令_指令重排的意义

    现代计算机由三大部分组成(已经转化为以存储器为中心) CPU(Central Processing Unit) 中央处理器,核心部件为ALU(Arithmetic Logic Unit,算术逻辑单元) ...

  4. 计算机硬件简介ppt,_计算机硬件简介.ppt

    _计算机硬件简介 计算机基础教程 内容提要 微型计算机硬件系统概述 微型计算机硬件系统 计算机引导过程(自学) 计算机选购(自学) 学习要求 基本要求 理解微机主板的作用并且能识别主板上的部件: 能够 ...

  5. c语言编译器 代码优化,c编译器高级篇!!搞定c编译器优化

    对于c编译器,想必大家也有所了解,3款主流c编译器也是活跃在不同人群的PC上.网络上很多文章都止步于对c编译器的介绍,并未探索c编译器更加深层次的内容.而在本文中,将涉及c编译器的高级部分--c编译器 ...

  6. CV之FR:计算机视觉之人脸识别(Face Recognition)方向的简介、使用方法、案例应用之详细攻略

    CV之FR:人脸识别之人脸特征提取算法相关思路配图.论文集合 目录 人脸识别(Face Recognition)方向的简介 FR相关论文集合 FR相关算法配图集合 人脸识别(Face Recognit ...

  7. CV之FR:计算机视觉之人脸识别(Face Recognition)方向的简介、代码实现、案例应用之详细攻略

    CV之FR:计算机视觉之人脸识别(Face Recognition)方向的简介.代码实现.案例应用之详细攻略 目录 人脸识别简介 1.人脸识别的任务 2.人脸识别常用数据集 3.损失函数 4.网络模型 ...

  8. Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介、下载、使用方法(包括数据增强)之详细攻略

    Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介+数据增强(将已有MNIST数据集通过移动像素上下左右的方法来扩大数据集为初始数据集的5倍) 目录 MNIST ...

  9. mips j指令_计算机组成原理 指令

    CPU 能处理的只有指令,我们写的程序归根结底就是指令,高级语言只有翻译成机器码,即计算机能够识别的指令,才能够被执行. 不同的 CPU 拥有不同的指令集,一般 PC 使用 Intel 的 CPU,i ...

最新文章

  1. 使用jQuery的Scrollify插件实现鼠标滚轮或者手势滑动到页面下一节点部分
  2. Go——连接 JFrog Artifactory 简单测试
  3. hibernate更新部分字段的几种方法
  4. 51CTO学院四周年-成长之路
  5. mysql log_来吧,了解下mysql有哪些log
  6. 《飞鸽传书》已经不算陌生
  7. Liferay 7:Liferay内部博客地址
  8. Python3多进程与多线程区别及使用(1.进程)
  9. tp5分页不加载搜索参数
  10. Python——配置环境的导出与导入
  11. 组策略复制失败排错思路实例
  12. virtualbox 安装 虚拟机的时候报错不能创建新任务
  13. 【每日算法Day 105】打家劫舍第二弹:看好你的电瓶车!
  14. 2017-07-12 周三 今日总结
  15. libxml主要函数说明 (一)
  16. no zuo no die _0_
  17. 拆解市面上卖几百上千的语聊挂机赚钱项目
  18. SysML-Sec A model Driven Approach for Designing Safe and Secure Systems
  19. Windows cmd 查看文件MD5 SHA1 SHA256
  20. https://imgsa.baidu.com/forum/pic/item/...【贴吧图床】

热门文章

  1. Attention 扫盲:注意力机制及其 PyTorch 应用实现
  2. 《交互式线性代数》完整版正式发布!支持在线全交互式体验(含源码,离线也能看)...
  3. 开源-BDCI2018供应链需求预测模型第一名解决方案和代码
  4. 曾几何时,我们炼的不是丹,是特征
  5. 剧本杀,继狼人杀之后的下一个风口
  6. 算法笔记-两数之和、三数之和、四数之和(LeetCode)
  7. PHP开发电脑网站支付宝支付详细流程(沙箱测试篇)
  8. Spring Boot使用Spring Data Redis操作Redis(单机/集群)
  9. svn数据库自动备份脚本
  10. 搞定Oracle SCN -system change number