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

程序调用

过程是编译器的重要且经常使用的编程结构。它用于为过程调用和返回生成良好的代码。

程序调用顺序

调用的转换包括在每个过程的进入和退出时采取的一系列操作。在调用顺序中将执行以下操作:

  • 当发生过程调用时, 则会为激活记录分配空间。
  • 评估被调用过程的参数。
  • 建立环境指针, 以使被调用过程能够访问封闭块中的数据。
  • 保存调用过程的状态, 以便它可以在调用后恢复执行。
  • 同时保存寄信人地址。它是被调用例程完成后必须转移到的位置的地址。
  • 最后, 为被调用过程生成一个跳转到代码开头。

让我们考虑一个简单的过程调用语句的语法

S →    call id(Elist)
     Elist →   Elist, E
     Elist →  E

用于过程调用的合适过渡方案为:

生产规则 语义动作
S→通话ID(Elist) 对于QUEUE do GEN(parap p)GEN(call id.PLACE)上的每个项目p
Elist→Elist, E 将E.PLACE附加到QUEUE的末尾
Elist→E 初始化QUEUE以仅包含E.PLACE

队列用于存储过程调用中的参数列表。

赞(0)
未经允许不得转载:srcmini » 程序调用

评论 抢沙发

评论前必须登录!