❶ 什么是目标代码
目标代码是指源代码经过编译程序产生的能被CPU直接识别的二进制代码。
目标代码的形式
目标代码生成是以中间代码作为输入,将其转换成特定机器的机器语言或汇编语言作为输出。在此以四元式序列作为它的加工对象,输出目标代码的形式有三种:具有绝对地址的机器语言程序,具有相对地址的机器码程序和汇编指令程序。
具有绝对地址的机器语言程序在存储空间中有固定的存储位置,一旦产生此种形式的目标代码之后,便可立即执行,因此这种形式最为迅速有效,但它并不灵活,不适合大型程序。
具有相对地址的机器语言程序由若干个目标模块组成,各个模块中都包含目标程序中的一部分代码,可将它们装人到存储空间的任何位置,然后由连接装配程序将它们连接在一起之后执行。显然,连接装配程序增加了开销,但这种形式有较大的灵活性,所以为许多编译程序所采用。
目标代码生成程序可以产生汇编语言形式的目标代码,这种形式在实现上要比前两种形式容易。当然,这种形式的目标代码还需经汇编后才能成为可执行代码。
目标代码的生成
目标代码生成是编译程序的最后一个工作阶段,其任务是把经优化处理之后的中间代码变换成特定机器上的机器语言程序或汇编语言程序,实现最终的翻译工作。由于目标语言依赖于硬件系统,因而如何充分利用现有的寄存器以节省访问内存的时间,合理地选择执行速度快的指令,生成尽可能短且有效的目标代码是这个阶段考虑的主要问题。
如果代码生成程序以四元式形式的中间代码序列作为输入,在其生成目标代码时,可假定每个四元式中的运算符及运算对象的数据类型均已知道,所需的全部类型转换操作均已在中间代码中得到体现。此外,如果出现在程序中的全部符号名运行时所需的存储空间均已得到分配,它们所在的数据区编号及相对地址已分别填人符号表各相应登记项栏中。所以在四元式中,仅出现符号名在符号表中登记项的序号。
参考文献
龙马工作室编着.第8章 CSS+Div常见用法 Dreamweaver CS5从新手到高手.人民邮电出版社,2011.02.
张晶主编.第11章 目标代码生成 编译原理.哈尔滨工程大学出版社,2011.08.
王丽芳,张静,李富萍等编着.第三章 程序设计语言和方法 计算机科学导论.清华大学出版社,2012.01.
❷ 编译原理
编译原理是计算机科学中的一慎昌门重要课程,主要研究如段配何将高级程序语言转化为机器语言宽燃扒的过程。它涉及到多个领域,如语言学、数学、计算机硬件和操作系统等。编译器是实现这一过程的关键工具,它可以将程序源代码转化为可执行的机器代码。
❸ 编译原理第三版清华大学
“编译原理”是计算机专业非常重要的一门专业课,在计算机教学中有着举足轻重的地位。
编译原理中编译系统是整个计算机系统中极其重要的系统软件,它的作用是把计算机高级语言最终翻译成等价的计算机指令,从而保证高级程序设计语言顺利运行。所以,“编译原理”是计算机科学中基本研究内容之一。
编译器:编译器是计算机程序中应用比较多的工具,在对编译器进行前端设计时,一定要充分考虑影响因素,还要对词法、语法、语义进行分析。
过程分析:将高级程序设吾言,如C、C++、Java等,翻译成计算机可以执行的机器指令代码流的过程,即是编译的过程。编译过程一般分为6个步骤,即词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成。
❹ C语言编译执行的全过程是怎样的
不明白楼主什么意思,就是先把你的代码转为汇编代码,然后转为二进制文件,读入内存执行。
❺ 编译原理简单吗
编译原理主要是讲了编译器的实现。
那什么是编译器呢?
编译器就是将 源程序→编译器 →目标机器代码的程序
本文将用一段最简单的代码进行说明
1 + 2 + 3
第一步. 词法分析
当代码从文件中被读入到编辑器时,将会进行词法分析
示例中的代码最终会转换为(下面为伪代码)
1 ADD 2 ADD 3
第二步. 语法分析
这一步编译器将会把词法分析的结果转换成AST(abstract syntax tree, 抽象语法树)
所有的操作数将会作为子节点,所有的操作符将会作为父节点。(不知道的同学可以看一下树的生成)
1 + 2 + 3 对应的树
3. 生成目标代码
对上面的树进行后序遍历,将会得到下面的伪代码
((1 2 +) 3 +)
生成的汇编伪代码为
START:
MOV VALUE, 0//初始化结果为0
ADD VALUE, 1
ADD VALUE, 2//(1 2 +)的汇编伪代码
ADD VALUE, 3
RET VALUE
END
最终汇编代码会被编译成机器代码,在计算机上执行。
下面为一般情况下的编译流程
1. 词法分析(生成代码对应的token序列,使用正则表达式)
2. 语法分析(生成AST)
3. 语义分析(对代码的语法进行检查)
4. 代码生成(生成可执行的代码)