簡體   English   中英

Smalltalk 如何操作調用堆棧幀(thisContext)?

[英]How does Smalltalk manipulate call stack frames (thisContext)?

Smalltalk object thisContext看起來很奇怪很奇妙。 我無法理解它是什么以及它是如何工作的。 甚至它是如何實現延續的。

對於 C 的調用堆棧,我可以很容易地想象它是如何實現和工作的。 但是對於這個……我不能。 請幫助我理解它。

我認為這不是一個簡單的問題。 堆棧通過 MethodContext 的實例在圖像中具體化。 一個 MethodContext 可以有一個發送者,它是另一個 MethodContext。 那個可以有另一個……生成一個完整的堆棧。 MethodContext 在執行 CompiledMethod 時由 VM 實例化(也在語言中具體化)。

MethodContext 如何映射到 C 堆棧,這取決於 VM。 StackVM(CogVM 位於 StackVM 之上)正是一個能夠更好地映射 MethodContext con C 堆棧的 VM。

除了盧卡斯說的藍皮書,檢查

http://www.mirandabanda.org/cogblog/檢查左側的帖子...

我建議您在http://lists.squeakfoundation.org/mailman/listinfo/vm-dev中詢問

您可以在Smalltalk-80: The Language and its Implementation中找到最好的解釋,第 26 到 30 章。堆棧幀(上下文)在第 580 頁進行了解釋。

更正確地說thisContext一個延續——尤其是當前的延續。

想象一個變量cMethodContext激活之前被設置為指向該上下文。 這就是thisContext

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM