srcmini - 专业IT技术分析博客srcmini

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

最新文章 第2209页

存储分配-srcmini
编译器设计

存储分配

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

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

编译器设计

激活记录

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

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

运行时存储组织-srcmini
编译器设计

运行时存储组织

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

当目标程序执行时, 它将在其自己的逻辑地址空间中运行, 每个程序的值都在其中定位。 逻辑地址空间在编译器, 操作系统和目标计算机之间共享, 以进行管理和组织。操作系统用于将逻辑地址映射到通常分散在整个内存中的物理地址。 运行时内存细分 运行...

表示范围信息-srcmini
编译器设计

表示范围信息

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

在源程序中, 每个名称都具有一个有效区域, 称为该名称的范围。 块结构语言中的规则如下: 如果在块B中声明了名称, 则该名称仅在B中有效。 如果B1块嵌套在B2内, 则对块B2有效的名称对B1也有效, 除非在B1中重新声明了名称的标识符。 ...

符号表的数据结构-srcmini
编译器设计

符号表的数据结构

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

编译器包含两种类型的符号表:全局符号表和作用域符号表。 全局符号表可以由所有过程和作用域符号表访问。 名称和符号表的范围按层次结构排列, 如下所示: 上面的语法可以用符号表的分层数据结构表示: 全局符号表包含一个全局变量和两个过程名称。 s...

编译器设计

符号表的实现

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

本文概述 实现符号表 lookup() 符号表是在编译器中使用的重要数据结构。 符号表用于存储有关各种实体(例如对象, 类, 变量名, 接口, 函数名等)的出现的信息。在分析和合成阶段均使用该表。 符号表用于以下目的: 它用于以结构化形式将...

编译器设计

case语句的翻译

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

Switch和case语句支持多种语言。 case语句的语法如下: 其翻译方案如下所示: 将E评估为T的代码 当看到switch关键字时, 将生成一个新的临时T和两个新标签test和next。 当出现case关键字时, 则为每个case关键...

编译器设计

变量声明的翻译

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

遇到声明时, 我们需要为声明的变量安排存储空间。 对于过程中的每个本地名称, 我们创建一个ST(符号表)条目, 其中包含: 名称的类型 名称需要多少存储空间 生产: 声明的合适过渡方案是: 生产规则 语义动作 D→整数, id ENTER(...

编译器设计

程序调用

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

过程是编译器的重要且经常使用的编程结构。它用于为过程调用和返回生成良好的代码。 程序调用顺序 调用的转换包括在每个过程的进入和退出时采取的一系列操作。在调用顺序中将执行以下操作: 当发生过程调用时, 则会为激活记录分配空间。 评估被调用过程...