编译器
2021-1-16
| 2023-8-2
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
我们平时说的程序,是指双击后就可以直接运行的程序,称为可执行程序(Executable Program)。在 Windows 下,可执行程序的后缀有 .exe 和 .com(.exe 比较常见);在类UNIX系统(Linux、Mac OS等)下,可执行程序没有特定的后缀,系统根据文件的头部信息来判断是否是可执行程序。
 
可执行程序的内部是一系列计算机指令和数据的集合,它们都是二进制形式的,CPU 可以直接识别,毫无障碍;但是对于程序员,它们非常晦涩,难以记忆和使用。这就倒逼程序员开发出了编程语言,提高自己的生产力,例如汇编、C语言、C++、Java、Python、Go语言等
 
C语言代码由固定的词汇按照固定的格式组织起来,简单直观,程序员容易识别和理解,但是对于CPU,C语言代码就是天书,根本不认识,CPU只认识几百个二进制形式的指令。这就需要一个工具,将C语言代码转换成CPU能够识别的二进制指令,也就是将代码加工成 .exe 程序;这个工具是一个特殊的软件,叫做编译器(Compiler)
编译器能够识别代码中的词汇、句子以及各种特定的格式,并将他们转换成计算机能够识别的二进制形式,这个过程称为编译(Compile)
编译器还有一个优势。一般而言,不同CPU制造商使用的指令系统和编码格式不同。例如,用Intel Core i7 CPU编写的机器语言程序对于ARM Cortex-A57 CPU而言什么都不是。但是,可以找到与特定类型CPU匹配的编译器。因此,使用合适的编译器或编译器集,便可把一种高级语言程序转换成供各种不同类型 CPU 使用的机器语言程序。一旦解决了一个编程问题,便可让编译器集翻译成不同 CPU 使用的机器语言。
 
C语言的编译器有很多种,不同的平台下有不同的编译器,例如:
主流桌面操作系统:
  • Windows 下常用的是微软编译器(cl.exr),它被集成在 Visual Studio 或 Visual C++ 中,一般不单独使用
  • Linux 下常用的是 GUN 组织开发的 GCC,很多 Linux 发行版都自带 GCC
  • Mac 下常用的是 LLVM/Clang,它被集成在 Xcode 中(Xcode 以前集成的是 GCC,后来由于 GCC 的不配合才改为 LLVM/Clang,LLVM/Clang 的性能比 GCC 更加强大)
 
嵌入式系统:
  • 用于 Keil 公司 51 系列单片机的 Keil C51 编译器
  • 当前大红大紫的 Arduino 板搭载的开发套件,可用针对 AVR 微控制器的 AVR GCC 编译器
  • ARM 自己出的 ADS(ARM Development Suite)、RVDS(RealView Development Suite)和当前最新的 DS-5 Studio
  • DSP 设计商 TI(Texas Instruments)的 CCS(Code Composer Studio)
  • DSP 设计商 ADI(Analog Devices,Inc.)的 Visual DSP++ 编译器,等等
notion image
 
  • C
  • 包装器编程机制
    目录