什么是静态分配?
这是最简单的分配方案,其中数据对象的分配在编译时完成,因为每个数据项的大小都可以由编译器确定。静态分配的主要功能是将数据项绑定到特定的内存位置。静态内存分配过程包括确定指令和数据空间的大小。
递归子程序和长度可调的数组在语言中是不允许的。在静态分配中,编译器可以决定每个数据对象所需的存储量。因此,编译器很容易在活动记录中找到这些数据的地址。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