什么是静态分配?

这是最简单的分配方案,其中数据对象的分配在编译时完成,因为每个数据项的大小都可以由编译器确定。静态分配的主要功能是将数据项绑定到特定的内存位置。静态内存分配过程包括确定指令和数据空间的大小。

递归子程序和长度可调的数组在语言中是不允许的。在静态分配中,编译器可以决定每个数据对象所需的存储量。因此,编译器很容易在活动记录中找到这些数据的地址。FORTRAN 使用这种存储分配策略。

名称与分配的存储量的绑定在运行时不会改变。因此,这种分配的名称是静态分配。在静态分配中,编译器可以决定每个数据对象所需的存储量。因此,编译器很容易在活动记录中找到这些数据的地址。

在编译时编译器可以填充目标代码可以找到它操作的数据的地址。

调用语句的实现

实现静态分配所需的代码如下 -

MOV #here +20, callee.static_area/*保存返回地址*/

GOTO callee.code_area/*它将控制转移到被调用过程的目标代码*/

在哪里

callee.static_area- 活动记录的地址。

callee.code_area- 被调用过程的第一条指令的地址。

#here +20− 文字返回地址,它是 GOTO 之后的指令的地址。

return语句的实现

过程被调用方的返回是通过以下方式实现的:

转到 * callee.static_area

这会将控制转移到保存在激活记录开头的地址。

行动声明的执行

指令 ACTION 用于执行动作语句。

停止语句的实现

语句 HALT 是将控制权返回给操作系统的最后一条指令。

好处

  • 这很容易实施。

  • 它允许在编译期间进行类型检查。

  • 它消除了内存不足的可能性。

缺点

  • 它与递归子程序不兼容。

  • 不能使用其大小必须在运行时确定的变量。

  • 如果数据对象的大小称为编译时间,则可以进行静态分配。

  • 数据结构不能动态创建,也就是说,静态分配不能在运行时管理内存分配。

以上是 什么是静态分配? 的全部内容, 来源链接: utcz.com/z/351600.html

回到顶部