编译原理(三)目标代码的生成与优化基本概念

简介: 编译原理(三)目标代码的生成与优化基本概念

前边产生中间代码之后,后边的事儿就交给了后端,编译器后端主要包括代码生成器和目标代码优化器

代码生成器主要是把中间代码变成目标机器代码,这个过程十分依赖于目标机器,因为不同的机器有不同的字长.寄存器,证书数据类型和浮点数数据类型等

目标代码优化器则对上述代码进行优化,比如寻找合适的寻址方式,使用位移来替代乘法计算,删除指令等


由于现代的CPU相当的复杂,为了支持CPU的复杂特性,编译器的机器指令优化过程也十分复杂.是编译过程更为复杂的是有些编译器支持多种硬件平台,允许编译器编译出多种目标的CPU代码,比如GCC编译器就几乎支持所有的CPU平台,这也导致编译器的指令生成过程更为复杂.


相关文章
|
Linux Shell
【Shell脚本】Linux安装Nexus的两种方式以及开机自启
【Shell脚本】Linux安装Nexus的两种方式以及开机自启
|
缓存 安全 Java
|
机器学习/深度学习 数据采集 人工智能
|
消息中间件 分布式计算 大数据
数据为王:大数据处理与分析技术在企业决策中的力量
【10月更文挑战第29天】在信息爆炸的时代,大数据处理与分析技术为企业提供了前所未有的洞察力和决策支持。本文探讨了大数据技术在企业决策中的重要性和实际应用,包括数据的力量、实时分析、数据驱动的决策以及数据安全与隐私保护。通过这些技术,企业能够从海量数据中提取有价值的信息,预测市场趋势,优化业务流程,从而在竞争中占据优势。
613 2
|
10月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的冬奥会科普平台设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
11月前
|
存储 算法 决策智能
《C 语言下模拟退火算法于组合优化的应用要点全解析》
组合优化问题是计算机科学与数学的交叉领域中的研究热点。模拟退火算法作为一种基于概率的随机搜索方法,通过模拟固体退火过程,能够在解空间中高效寻找全局最优或近似最优解。本文探讨了用C语言实现模拟退火算法的关键步骤,包括算法原理、数据结构设计、温度参数控制、邻域生成与搜索策略、接受准则、终止条件及性能评估与调优,旨在为解决组合优化问题提供有效途径。
222 11
|
存储 Java 编译器
经验总结:源代码-目标代码的区别
源代码是由程序员用高级语言编写的可读文本文件,需编译成机器可执行的二进制目标代码。目标代码由编译器生成,包含机器指令,对机器可读但对人类不易理解。源代码便于修改,而目标代码需重新编译以反映更改。源代码不受系统限制,目标代码则特定于系统。此外,链接程序处理源文件间及库函数的引用,将目标文件连接成可执行文件。Java中的本地方法则允许调用非Java语言编写的代码,实现与底层系统的交互,提高程序性能或实现特定功能。
599 4
ES6 扩展运算符 ...【详解】(含使用场景、实战技巧和范例、实现原理、错误用法)
ES6 扩展运算符 ...【详解】(含使用场景、实战技巧和范例、实现原理、错误用法)
183 5
|
机器学习/深度学习 算法 vr&ar
深度学习之人脸关键点检测
人脸关键点检测的主要任务是识别并定位人脸图像中的特定关键点,例如眼睛的角点、眉毛的顶点、鼻子的底端、嘴角等。这些关键点不仅能提供面部结构的几何信息,还可以用于分析表情、识别个体,甚至检测面部姿势。
355 2
|
XML Java 应用服务中间件
Tomcat服务器的简介以及安装
Tomcat服务器的简介以及安装
537 3