【问题标题】:Dynamic linking with smalltalk objects与 smalltalk 对象的动态链接
【发布时间】:2008-12-25 20:14:56
【问题描述】:

我计划在我的 smalltalk 方言中实现动态链接。问题在于如何让消息传递与动态链接一起工作。

消息传递本身就是这么简单:将带有选择器的消息发送给对象,对象从它的协议中选择与选择器匹配的方法,然后处理与消息绑定的数据并返回结果。

在基于图像的实现中,可以以非常直接的方式实现消息传递 - 您的消息选择器可以只是从全局符号表转换而来的整数,您的协议可以只是其中包含整数和地址的哈希表。假设它使用全局符号表编译成一个大图像。

在动态链接中,您不能假定符号表指向正确的选择器。您可以通过使用字符串作为选择器来解决问题,但您注定语言会变慢。

有一种方法,它涉及复制协议和选择器表,以便进程正确地重新定位它们。但这听起来工作量很大。

有没有更好的方法来解决这个问题?另外,动态链接值得吗?如何实现选择器和协议的重定位?

【问题讨论】:

    标签: x86 smalltalk dynamic-linking language-implementation


    【解决方案1】:

    当然你可以假设一个全局符号表,你只需要更新它并确保在链接时代码只使用该表中的符号实例。你看过吱吱吗?加载代码是图像级别的(不是 VM),因此可以轻松地从任何 Squeak 图像中浏览。

    【讨论】:

      猜你喜欢
      • 2012-05-09
      • 2022-01-16
      • 2010-12-31
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多