SmalltalkオブジェクトthisContext
は奇妙で素晴らしいように見えます。それが何で、どのように機能するのか理解できません。そしてそれがどのように継続を可能にするかさえ。
Cのコールスタックの場合、それがどのように実装され、機能しているかを簡単に想像できます。しかし、これのために...私はできません。私がそれを理解するのを手伝ってください。
SmalltalkオブジェクトthisContext
は奇妙で素晴らしいように見えます。それが何で、どのように機能するのか理解できません。そしてそれがどのように継続を可能にするかさえ。
Cのコールスタックの場合、それがどのように実装され、機能しているかを簡単に想像できます。しかし、これのために...私はできません。私がそれを理解するのを手伝ってください。
簡単な質問ではないと思います。スタックは、MethodContextのインスタンスを使用してイメージ内で具体化されます。MethodContextには、別のMethodContextである送信者を含めることができます。その1つは別のものを持つことができます...スタック全体を生成します。MethodContextは、CompiledMethod(言語でも再定義されます)の実行中にVMによってインスタンス化されます。
MethodContextをCスタックにマップする方法。これは、VMによって異なります。StackVM(CogVMはStackVMの上にあります)は、MethodContextconCスタックをより適切にマッピングするVMです。
Lukasが言ったBlueBookとは別に、チェックしてください
http://www.mirandabanda.org/cogblog/ 左側の投稿を確認してください...
http://lists.squeakfoundation.org/mailman/listinfo/vm-devで質問することをお勧めします
Smalltalk-80:言語とその実装、第26章から第30章に記載されている最良の説明。スタックフレーム(コンテキスト)については、580ページで説明されています。
それthisContext
が継続であると言うのがより正確です-特に現在の継続。
c
アクティブ化する直前に、MethodContext
そのコンテキストを指すように設定されている変数を想像してみてください。それはthisContext
です。