実行結果

先に 実行のイメージ。
下にコード本体があります


#VM起動直後のスタック
#レジスタ一式分の領域が確保されている

[0, None, {}, 0, 0, 0]
#レジスタの内訳
#上と順番が違うのでよみづらい 申し訳ない

PC:0 SP:0 A:0 LOCALS:{} parent: None
#レジスタへのアクセッサオブジェクトのアドレス
<__main__.RegisterFrame object at 0x03B5B8D0>

#スタックマシンの命令 op_RegAllocによって 
#スタック上に新しくレジスタを生成
#更新されたスタックの状態

[
#以前使ってたレジスタの領域
0, None, {}, 0, 0, 0,
#新しく作ったレジスタの領域
0, <__main__.RegisterFrame object at 0x03B5B8D0>, {}, 0, 0, 100]
#新しく作ったレジスタの内訳
#以前のレジスタを示すparentがNoneから変化
#PCレジスタへ100を代入してみた

PC:100 SP:0 A:0 LOCALS:{} parent: <__main__.RegisterFrame object at 0x03B5B8D0>
#レジスタへのアクセッサオブジェクトのアドレスが変化している
<__main__.RegisterFrame object at 0x03B5EE50>

#命令 op_RegFreeによって使用中のレジスタを開放
#スタックの状態が戻っている

[0, None, {}, 0, 0, 0]
#PCが0 parentもNone に戻っている。
PC:0 SP:0 A:0 LOCALS:{} parent: None
#レジスタへのアクセッサオブジェクトのアドレスが戻っている
<__main__.RegisterFrame object at 0x03B5B8D0>