编辑: glay 2019-07-14
作业:2018年12月14日上课时提交 1.

图 1给出了一个按照非标准方式计算Fibonacci数的ML语言的函数main. 函数fib0计算第n个Fibonacci数(n ≥ 0).嵌套在fib0中的fib1假设n ≥ 2并计算第n个Fibonacci数.嵌套在fib1中的fib2假设n ≥ 4.运行时刻栈 从main的活动记录开始.我们考虑对fib0(1)的第一次调用即将返回的时 刻,请画出当时的运行时刻栈.每个活动记录内应有存放参数、返回值、 控制链、访问链和保存机器状态的空间.请标明: ? 各个活动记录的分界线,以及各个活动记录属于哪个函数调用. ? 哪个函数调用在栈中为各个元素创建了空间,以及哪个函数调用写 入了各个元素的值. ? 标明参数的值,控制链是如何指向的,访问链是如何指向的. 2. 图 2给出了目标机器的指令集和寻址模式.为下面的三地址语句序列生成 该目标机器的代码.这里假设x,y,p,q存放在内存位置中. y = *q if x < y goto L1 *p = y p = p +

4 goto L2 L1: q = q +

4 L2: y =

0 1 图1: 计算Fibonacci数的嵌套函数 指令 寻址模式的要求 LD dst, src src是某个寄存器R,或变量名x,或常数#n,或地址n(R). dst是某个寄存器R. ST dst, src src是某个寄存器R,或常数#n. dst是变量名x,或地址n(R). OP dst, src1, src2 OP是运算符ADD或SUB. src1, src2 是某个寄存器R,或常数#n. dst是某个寄存器R. BR L L是某个机器指令的标号. BLTZ R, L R是某个寄存器,L是某个机器指令的标号. 图2: 目标机器的指令集和寻址模式 2

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题