2、从简单编译器到多核片上系统(MPSoC)软件设计

从简单编译器到多核片上系统(MPSoC)软件设计

1. 软件编译基础

软件编译是电子和信息领域的常见概念。通常,应用程序使用高级编程语言(如 C/C++)实现。软件编译是将用高级符号语言编写的指令序列转换为机器语言,以便指令能够被执行。以将 C 语言应用程序转换为处理器可接受的汇编语言为例,编译过程包含以下步骤:
1. 词法分析 :将源代码文本分割成小片段,称为标记(tokens)。每个标记是语言的单个原子单元,如关键字、标识符或符号名。标记的语法通常是正则表达式。这一阶段也称为词法扫描,执行词法分析的软件称为词法分析器或扫描器。
2. 语法分析 :解析标记序列并构建中间表示,例如以树的形式。树是根据定义语言语法的形式语法规则构建的。解析树的节点代表基本操作和运算符,而弧表示节点之间的依赖关系。
3. 语义分析 :为解析树添加语义信息并构建符号表。符号表是一种数据结构,程序源代码中的每个标识符都与有关其声明和在源代码中出现的信息相关联,如类型、作用域,有时还有其位置。此阶段还执行语义检查,如类型检查(检查类型错误)或对象绑定(将变量和函数引用与其定义关联起来)。
4. 优化 :将中间解析树转换为功能等效但更快或更小的形式。优化的示例包括内联展开、死代码消除、常量传播、寄存器分配或自动并行化。
5. 代码生成 :遍历中间树并为树的每个节点生成目标语言的代码。这还涉及资源和存储决策,例如决定哪些变量适合放入寄存器和内存,以及选择和调度适当的机器指令及其相关的寻址模式。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值