主题:Re: 解释器 -- 调用函数
日期:1997 年 6 月 28 日星期六,10:44:03 -0700 (PDT)
Message-Id: <199706281744.KAA07952@solutions.solon.com>
X-scs-References: <199612161422.OAA02621@goday.ac.upc.es> <9701171704.ZM25160@collie.hpl.hp.com>
除了我在另一条消息中转达的想法之外,还有两个是我最近从其他网友那里收到的。Fermin Javier Reig 提出了一个变体,想法是使用一个像
Push(arg1); Push(arg2); ... Call(func);
这样的接口,虽然他的想法遇到了几个自己的问题,而且它也解决了你已经解决的那个问题,所以我在这里不再赘述。Jonathan Thompson 的想法是“创建一个非常大的char数组”,用要构建的参数列表(即栈帧)的图像填充该数组,然后将看起来像一个参数,即该数组,传递给被调用的函数,该函数——如果运气好的话——可以将其解释为多个参数。我认为这个技巧可以在某些机器上奏效,尽管我还没有对其进行过实验,而且它显然假设的是纯粹的栈调用模型,也就是说,在寄存器传递机器上它根本行不通。
Steve Summit