コンピュータシステムの理論と実装(3)
昨日はVMのStaticsTestを通すことができた。
StaticsTestはStaticセグメントへのリードライトのテストで、staticセグメントのスコープがちゃんと処理できているか?のテストだと思う。
初め、処理が全部終了しても、staticセグメントからスタックにとってきたはずのデータが0になっていて、なんでだーとなっていた。
staticセグメントは、ユニークラベルを作ってやると、アセンブラがラベルに遭遇した順にRAM上に割り付けてくれる。このラベルは「関数名.staticセグメントの番号」でつければ要件を満たしている…。
ただ実際はVMファイル内で共有アクセスできるから、関数名じゃなくてファイル名で付けないといけなかった。(でないと、ファイル内にある複数の関数から共通の領域を見れない)