首页 › 编译与程序转换 › 正文
编译器把源程序转换为目标执行形式 语义分析检查名称和类型等规则要求 类型系统约束值与操作之间的合法组合
笔记摘要
编译与程序转换
编译器把源程序转换为目标执行形式
编译器把源程序转换为目标执行形式。词法分析把字符序列划分为基本记号。语法分析根据文法建立程序结构表示。抽象语法树保留与程序语义相关的结构。语义分析检查名称和类型等规则要求。符号表记录变量和函数等标识信息。作用域规定某个名称可以被访问的范围。
优化可能使调试中的变量位置难以直接观察
优化可能使调试中的变量位置难以直接观察。链接器把目标文件和库组合成可执行形式。静态链接把需要的库代码加入最终产物。动态链接在装载或运行时解析部分依赖。应用二进制接口规定调用和数据布局约定。接口兼容性需要考虑编译器和平台差异。即时编译在程序运行期间生成机器代码。
死代码消除移除不会影响可见结果的代码
死代码消除移除不会影响可见结果的代码。公共子表达式消除复用相同的计算结果。循环不变量外提减少循环中的重复运算。循环展开用更多代码换取部分执行效率。内联把函数体展开到调用位置附近。过度内联可能增加代码体积和缓存压力。寄存器分配把临时值安排到有限寄存器。
寄存器溢出时可能需要使用栈保存数据
寄存器溢出时可能需要使用栈保存数据。指令选择把中间操作映射到目标机器指令。指令调度调整顺序以改善流水线利用。自动向量化把适合的循环转换为向量运算。别名分析判断不同引用是否可能指向同一对象。别名关系不明确可能限制编译器优化能力。优化等级提高不保证所有程序都更快。调试信息帮助把机器位置映射回源程序。
笔记类型说明
来源:棠羽知识资讯网
鹅湖之会成为后世讨论学术分歧的重要事件-晚明思想变化与社会经济和出版文化相关-理学名称概括了具有共同问题意识的思想传统
【咖啡豆表面出油与烘焙程度和放置时间有关】拼配咖啡将不同来源或特点的豆子组合使用,生豆烘焙时会发生失水膨胀和复杂的风味变化