看到有人写了一个系列文章C internal,从汇编的角度去看 C 语言的一些语法,例子主要都是 x86 上的,忽然想起来可以用 Thumb 指令去理解,一些指令的变化上也会简单一些,顺便也是一个翻译理解过程。
C 语言是一个通用的系统语言,是编译运行的,需要通过编译器将代码转换成机器运行的指令。编译器先将C 语言转换成汇编,然后转换成对应的机器指令。
这里用到的编译器是 gcc,可以通过交叉编译的方式将 C 语言在 x86 机器上编译生成在ARM CPU 上运行的指令。编译器名称是 arm-none-eabi-gcc, arm 代表生成的指令运行目标,none 指的是没有对应目标系统,是 bare-metal 的,eabi 指的是嵌入式应用二进制接口,允许开发者链接生成不同编译器生成的库。
文章适用人群:* 好奇 C 语言如何生成汇编代码* 嵌入式开发者,可以对体系结构有一定了解* 逆向开发者