① 编译器将高级语言程序转变为目标代码 这句话是否正确
对的,高级语言程序如c/c++,目标代码是指对应机型的代码,如X86,MIPS,ARM,PowerPC
普通的编译器就是完成这个工作.如gcc,clang
至于java,python这类实际带有虚拟机的语言会有所不同,会生成比目标代码再高一层的字节码,最终由虚拟机运行(实际运行时也是目标代码)(不考虑jit),不过这里不考虑
② 编译器是将高级语言编译成汇编语言吗
一般的编译器,是先将高级语言转换成汇编语言(中间代码),然后在汇编的基础上优化生成OBJ目标代码,最后Link成可执行文件
③ 将用高级语言编写的源程序转换成等价的目标程序的过程,称为
(总体上说)称为编译。
高级语言如果指的是C的话:
C语言详细编译过程分成四个步骤:
1. 预处理(preprocessor):将存储在不同文件的源程序(.c文件)聚合在一起,将语言中的宏进行替换,比如预处理指令#include,让编译器打开包含的文件,将其程序与其他程序呆在一起.生成.i文件。
2.编译:预处理源程序(.i文件)变为汇编程序(.s文件)
3.汇编(assember):将汇编程序转换为可重定位(relocatable: 就是说文件里面的代码段和数据的地址还没有最终确定)的机器代码,这一步产生目标文件(.obj或.o文件)。
4.链接(linker)/加载(loader): 链接就是把目标文件和其他分别进行编译生成的程序模块(如果有的话)及系统提供的标准库函数连接在一起,生成可运行的可执行文件的过程,加载时将各代码与数据定位到内存合适的位置,这一步产生最终的可执行文件。
④ 编译程序是把高级语言编译成汇编语言程序还是机器语言程序为什么王道上有两个说法啊,我纠结了!!
编程语言分为高级编程语言和低级编程语言。
汇编属于低级语言,语法更接近程序实际的运行顺序。
C/C++属于高级语言,语法更接近自然语言。
无论C/C++还是汇编语言,都是将代码编译成可被机器识别的机器语言。
⑤ 把高级语言编写的源程序转换为可执行程序的过程叫什么
这种过程叫作编译程序。
⑥ 编译程序可以将高级语言变成机器语言吗
将高级语言转换成由0,1构成的机器语言需要通过编译程序来实现。即可转化成机器语言。
机器语言是一种指令集的体系。这种指令集,称机器码,是电脑的CPU可直接解读的数据。
机器码有时也被称为原生码,这个名词比较强调某种编程语言或库,它与运行平台相关的部份。
⑦ 编译程序只需装入就可以将高级语言翻译为机器语言
所谓编译是指报源程序转换为目标程序的过程,所以编译程序是一个中间介质,它可以将高级语言的程序编译生成一个机器语言的目标程序,因此还要运行编译后的目标程序,计算机只能认识二进制,所以它只能执行机器语言的程序,间接执行高级语言有两种方式就是编译和翻译,也可以通过汇编来间接执行汇编程序