博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自己动手构造编译系统:编译、汇编与链接2.4.1 汇编词法、语法分析
阅读量:5982 次
发布时间:2019-06-20

本文共 556 字,大约阅读时间需要 1 分钟。

2.4.1  汇编词法、语法分析

  

     汇编语言有独立的词法记号,对于汇编词法的分析,只需要构造相应的词法有限自动机就可以了。举一个简单的例子:

mov eax,[ebp-8]

  该指令有8个词法记号,它们分别是:'mov''eax'逗号'[''ebp''–''8'和']'。汇编器的词法分析器将词法记号送到语法分析器用于识别汇编语言的语法模块。同样,我们需要构造汇编语言语法分析器,在这里可以提前看一下上述汇编指令的抽象语法树,如图2-13所示。

 

图2-13  汇编指令抽象语法子树

  图2-13中是简化后的抽象语法树,与编译器类似,语法分析器会在非叶子节点处识别语法模块,以产生语义动作。由于汇编器要输出可重定位目标文件,因此在语法分析时要收集目标文件的相关信息。比如记录代码段和数据段的长度、目标文件符号表的内容、重定位表的内容等,这些操作都在语法分析器识别每个语法模块时使用语法制导的方式完成。

  另外,汇编器和编译器最大的不同是汇编器需要对源文件进行两遍扫描,其根本原因是汇编语言允许符号的后置定义,例如汇编语言常见的跳转指令:

     jmp L

L:

  很明显,在第一遍分析jmp指令的时候,汇编器并不知道符号L是否已经定义。因此,汇编器需要通过第一遍扫描获取符号的信息,在第二遍扫描时使用符号的信息。

转载地址:http://yhlox.baihongyu.com/

你可能感兴趣的文章
路由器NAT网络地址转换
查看>>
checkbox全选,全不选
查看>>
linux下的连接文件——软连接和硬连接的区别
查看>>
怎么查看linux文件夹下有多少个文件(mac同样)
查看>>
JAVA BIO 服务器与客户端实现示例
查看>>
《Cisco IPv6网络实现技术(修订版)》一2.6 配置练习:使用Cisco路由器配置一个IPv6网络...
查看>>
《可穿戴创意设计:技术与时尚的融合》一一第2章 与可穿戴设备有关的故事...
查看>>
ruby动态new对象
查看>>
Linux中grep命令的12个实践例子
查看>>
使用Docker Compose部署基于Sentinel的高可用Redis集群
查看>>
Mybatis 3学习笔记(一)
查看>>
Guice系列之用户指南(十)
查看>>
树与森林的存储、遍历和树与森林的转换
查看>>
Android自定义属性
查看>>
Visual C#之核心语言
查看>>
代码重构(五):继承关系重构规则
查看>>
Windows App开发之集合控件与数据绑定
查看>>
中大型网站技术架构演变过程
查看>>
ARTS训练第三周
查看>>
vue中v-for循环如何将变量带入class的属性名中
查看>>