《编译与反编译技术》—第1章1.6节编译的前端和后端

    xiaoxiao2024-04-18  6

    本节书摘来自华章出版社《编译与反编译技术》一书中的第1章,第1.6节编译的前端和后端,作者庞建民,陶红伟,刘晓楠,岳峰,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

    1.6 编译的前端和后端

    通常,编译的阶段被分成前端和后端两部分。前端是由只依赖于源语言的那些阶段或阶段的一部分组成,往往包含词法分析、语法分析、语义分析和中间代码生成等阶段,当然还包括与这些阶段同时完成的错误处理和独立于目标机器的优化。后端是指编译器中依赖于目标机器的部分,往往只与中间语言有关而独立于源语言。后端包括与目标机器相关的代码优化、代码生成和与这些阶段相伴的错误处理和符号表操作。

    基于同一个前端,重写其后端就可以产生同一种源语言在另一种机器上的编译器,这已经是为不同类型机器编写编译器的常用做法。反过来,把几种不同的语言编译成同一种中间语言,使得不同的前端都使用同一个后端,进而得到一类机器上的几个编译器,却只取得了有限的成功,其原因在于不同源语言的区别较大,使得包容它们的中间语言庞大臃肿,难以实现高效率。

    编译的几个阶段往往通过一遍(pass)扫描来实现,这里的“一遍扫描”通常是指读一个输入文件和写一个输出文件的过程。把几个阶段组成“一遍”,并且这些阶段的活动在该遍中交错进行是经常发生的。

    相关资源:《反编译技术与软件逆向分析》pdf版
    最新回复(0)