pharo - Pharo 中的赋值是如何实现的?

标签 pharo

四处查看图片并搜索“:=”不会产生很快弹出的相关结果。

赋值在 Pharo 图像中的具体位置以及如何实现?

最佳答案

赋值被翻译成字节码指令。对临时变量的赋值转换为 popIntoTemp:,它将当前顶部弹出堆栈并将其存储在分配给由索引(指令的参数)描述的临时变量的槽中。

其他赋值以类似的方式工作,因此对实例变量的赋值转换为 popIntoRcvr:(“弹出到接收器”),其中索引(指令的参数)指定索引实例变量。

类变量赋值转换为popIntoLit:(这里指令的参数是文字本身,即本例中的类变量),类实例变量赋值给popIntoRcvr: 和全局分配到 popIntoLit:(参数是文字本身,即全局)。

用于指令的名称取自 Pharo 中的字节代码 View 。 The Blue Book根据字节(当然是虚拟机使用的字节)和描述性名称来定义这些指令。以下是与上述指令相关的字节:

  • popIntoTemp:: <68>
  • popIntoRcvr:: <60>
  • popIntoLit::<82 C0>

另请注意,对于特殊情况可能还有其他说明,例如以某个较大的偏移量存储到临时变量中。

关于pharo - Pharo 中的赋值是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613267/

相关文章:

testing - 如何以编程方式将故障注入(inject) Pharo 方法?

reflection - 如何获得 Pharo 中的*所有*类(class)?

svg - 在 Pharo 中与 SVG 交互?

dom - 如何收集多个网页的 h1 标题?

parsing - 使用smalltalk编写一个小解析器,如何使用创建的方法'标识符?

smalltalk - 海边: 'contents' 的接收者为零

smalltalk - Graph-ET x 轴标签

http - 在 Pharo 中发出 HTTP 请求并获取响应 header

smalltalk - 类端初始化何时发送?

smalltalk - Pharo是否提供尾叫优化?