个性化阅读
专注于IT技术分析

编译器设计 第2页

构建基本块

半瓶木阅读(1146)评论(0)赞(0)

基本块包含一个语句序列。控制流从语句的开始进入, 而在结束时离开而没有任何停止(可能是该块的最后一条指令除外)。 以下三个地址语句序列构成一个基本块: 基本块构建 算法:划分为基本块 输入:它包含三个地址语句的序列 输出:它包含一个基本块列...

运行时存储管理

半瓶木阅读(953)评论(0)赞(0)

本文概述 静态分配 堆栈分配 在执行过程中所需的信息保存在称为激活记录的存储块中。激活记录包括存储过程本地名称的信息。 我们可以使用以下方式在目标代码中描述地址: 静态分配 堆栈分配 在静态分配中, 激活记录的位置在编译时固定在内存中。 在...

目标机器

半瓶木阅读(846)评论(0)赞(0)

目标计算机是一种可字节寻址的计算机。一个字有4个字节。 目标机器具有n个通用寄存器R0, R1, …, Rn-1。它还具有以下形式的两个地址的指令: 其中, op用作操作码, 源和目标用作数据字段。 它具有以下操作码:ADD(将...

编译器设计问题

半瓶木阅读(753)评论(0)赞(0)

本文概述 1.输入到代码生成器 2.目标程序 3.内存管理 4.指令选择 5.寄存器分配 6.评估顺序 在代码生成阶段, 可能会出现各种问题: 输入到代码生成器 目标程序 内存管理 指令选择 寄存器分配 评估顺序 1.输入到代码生成器 代码...

代码生成器

半瓶木阅读(837)评论(0)赞(0)

本文概述 注册和地址描述符 代码生成算法 代码生成器用于生成三地址语句的目标代码。它使用寄存器存储三个地址语句的操作数。 例: 考虑三个地址语句x:= y + z。它可以具有以下代码序列: 注册和地址描述符 寄存器描述符包含每个寄存器中当前...

语义错误

半瓶木阅读(3444)评论(0)赞(0)

在语义分析阶段, 将出现此类错误。这些类型的错误是在编译时检测到的。 大多数编译时错误是范围和声明错误。例如:未声明的标识符或多个声明的标识符。类型不匹配是另一个编译时错误。 使用错误的变量或使用错误的运算符或以错误的顺序执行操作可能会引起...

语法错误

半瓶木阅读(946)评论(0)赞(0)

在语法分析阶段, 将出现此类错误。在执行程序期间发现语法错误。 一些语法错误可能是: 结构错误 缺少操作符 括号不平衡 当无效的计算输入计算器时, 语法错误也可能发生。这可能是由于在一个数字中输入几个小数点, 或者在不关闭括号的情况下打开了...

词法错误

半瓶木阅读(1362)评论(0)赞(0)

在词法分析阶段, 可以检测到这种类型的错误。 词法错误是与任何标记的模式都不匹配的字符序列。在执行程序期间发现词法阶段错误。 词法相位误差可以是 拼写错误。 超出标识符或数字常量的长度。 出现非法字符。 删除应该出现的字符。 用不正确的字符...

存储分配-srcmini

存储分配

半瓶木阅读(713)评论(0)赞(0)

本文概述 静态存储分配 堆栈存储分配 堆存储分配 分配内存的不同方法是: 静态存储分配 堆栈存储分配 堆存储分配 静态存储分配 在静态分配中, 名称绑定到存储位置。 如果在编译时创建了内存, 那么该内存将在静态区域中创建, 并且只会创建一次...

激活记录

半瓶木阅读(926)评论(0)赞(0)

控制堆栈是运行时堆栈, 用于跟踪实时过程的激活, 即用于查找尚未完成执行的过程。 当它被调用(激活开始)时, 过程名称将被压入堆栈, 而当它返回(激活结束)时, 它将弹出。 激活记录用于管理过程的一次执行所需的信息。 调用过程时, 激活记录...