未分类

说说编译器(compiler)那些事儿

Contents

1. 编译器

运行环境=操作系统+硬件
– CPU只能运行本地代码。
– 能够把C语言等高级语言编写的代码转换成本地代码的程序称为编译器。
– 每个编写源代码的语言都需要其专用的编译器。
– 编译器本身也是程序的一种,所以需要运行环境。(例如linux c编译器 windows c 编译器)

1.1 交叉编译器

交叉编译器它生成的是和运行环境中的CPU中不同的CPU所使用的本地代码。
例如:通常嵌入式linux的程序在桌面系统中编译,然后放到嵌入式系统中运行。

2. TI 编译器

2.1 ARM CGT

TypeAllSMDUser guideUser guides Title Date
star User guides TI ARM Clang Compiler Tools User Guide Mar. 28, 2021
SMD ADC12D1620QML-SP SMD 5962-12205 Oct. 22, 2020
User guide ARM Assembly Language Tools v20.2.0.LTS User’s Guide (Rev. Y) Feb. 04, 2020
User guide ARM Optimizing C/C++ Compiler v20.2.0.LTS User’s Guide (Rev. V) Feb. 04, 2020

2.2 C6000 CGT

TypeAllApplication noteUser guide Title Date
User guide TMS320C6000 Assembly Language Tools v8.3.x User’s Guide (Rev. C) May 21, 2018
User guide TMS320C6000 Optimizing Compiler v8.3.x User’s Guide (Rev. C) Sep. 30, 2017
Application note Multicore Programming Guide (Rev. B) Aug. 29, 2012
Application note Optimizing Loops on the C66x DSP Nov. 09, 2010

2.3 C7000 CGT

TypeAllUser guide Title Date
User guide C7000 C/C++ Optimization Guide (Rev. A) Mar. 05, 2021
User guide C7000 C/C++ Optimizing Compiler Users Guide (Rev. E) Mar. 03, 2021
User guide C7000 Host Emulation Users Guide (Rev. G) Mar. 03, 2021
User guide C6000-to-C7000 Migration User’s Guide (Rev. C) Aug. 11, 2019
User guide C7000 Embedded Application Binary Interface (EABI) Reference Guide (Rev. C) Aug. 11, 2019
User guide VCOP Kernel-C to C7000 Migration Tool User’s Guide (Rev. C) Aug. 11, 2019

ARM GNU compiler

https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain

GCC tools are used to compile and link code on ARM A72.

CGT Download link
ARM64 CGT for A72 TI-RTOS https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf.tar.xz
ARM64 CGT for A72 Linux https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
ARM32 CGT for R5F U Boot https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz

x86_64 Linux hosted cross compilers
AArch32 bare-metal target (arm-none-eabi)

gcc-arm-10.2-2020.11-x86_64-arm-none-eabi.tar.xz
gcc-arm-10.2-2020.11-x86_64-arm-none-eabi.tar.xz.asc

AArch32 target with hard float (arm-linux-none-gnueabihf)

gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf.tar.xz
gcc-arm-10.2-2020.11-x86_64-arm-none-linux-gnueabihf.tar.xz.asc

AArch64 ELF bare-metal target (aarch64-none-elf)

gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf.tar.xz
gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf.tar.xz.asc

AArch64 GNU/Linux target (aarch64-none-linux-gnu)

gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz
gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu.tar.xz.asc

AArch64 GNU/Linux target (aarch64_be-none-linux-gnu)

gcc-arm-10.2-2020.11-x86_64-aarch64_be-none-linux-gnu.tar.xz
gcc-arm-10.2-2020.11-x86_64-aarch64_be-none-linux-gnu.tar.xz.asc

Q&A

1.编译器和解释器有什么不同?

编译器在运行前对所有的源代码进行进行解释处理的。
而解释器则在运行时对源代码一行一行进行解释处理的。

2. 分割编译时什么?

将整个程序分割成多个源代码来编写,然后分别进行编译。

发表评论

您的电子邮箱地址不会被公开。