C语言编译流程:
C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf、.axf等)
不同的CPU指令集对应不同的汇编语言的机器语言(机器码、机器指令),因此汇编语言和机器语言是不跨平台的。而C语言源码可以通过不同平台的编译器将源码重新编译的目标文件可以在平台上运行
C的源代码是跨平台的,而编译后的目标文件和可执行文件就不是跨平台的,跨平台主要是靠各个平台上的编译器,所谓“多次编译,到处运行”
这都要靠编译器的功劳,编译器将C程序翻译为了适合当前计算机体系的机器语言。
汇编语言所操作的对象不是具体的数据,而是寄存器或者存储器,也就是说它是直接和寄存器和存储器打交道,这也是为什么汇编语言的执行速度要比其它语言快,但同时这也使编程更加复杂,因为既然数据是存放在寄存器或存储器中,那么必然就存在着寻址方式,也就是用什么方法找到所需要的数据
网友评论