てきとうなさいと べぇたばん

Python mini hack-a-thon 夏山合宿 2016 行ってきた

ヴァーチャルマシンの作成で、アセンブリの生成ができた。よっしゃ、テストだ! エラーでとまりました…アドレスがアンダーフローした VMエミュレーターを実行させて挙動を確認しているところ 刀屋のそば。普通らしいが…(完食しました) 菅平ダム。

何をしようとしてたのか

http://pyhack.connpass.com/event/29999/

実際には何をしてたのか

  • 1日目には蕎麦食った
  • 2日目は走った
    • 下りのほうがきつかった。
    • 登りは走って登れなかった。
    • 2.9キロで150メートルも下ってた。ただの崖だ。即日筋肉痛。
    • コンビニまでいこうとしたが、国道406号に差し掛かった部分で止めた
  • BBQは肉と野菜食った
    • nand2tetrisはようやくバーチャルマシンの各セグメントが対応できた。staticセグメントが終わればうまく行けるはず
  • 3日目は帰った
    • 朝飯美味い
    • 筋肉痛が激しい

2016-09-02 現状

pointerのpopコマンドの実装を検討している。pointerアドレスはTHIS or THATによってもたらされる。popを行うとGlobal StackからTHIS or THATへ挿入される。

2016-09-04 現状

とりまpointer tempセグメントまで不完全だが到達できた。どうやら、SPが256を下回ってしまう不具合があるようだ。最も簡単なユースケースを調べていく必要があるだろう。恐らくではあるがadd/subなどでアドレスを戻す際にオカシイのではないだろうか。という推測である。

なんにせよ、残りはこのバグの処理とstaticセグメントのみになった。かなり進捗があって嬉しいと感じる反面、いつ終わるんだというのはある。困ったものだ。

2016-09-04 pyhackおわりのあと

やはり、PointerTestで実験してみたがうまくいかないようだ。やはり、以下の様なステートメントでエラーになる模様。

push that 1
push that 2
add

本来であれば、ここはGlobal StackのSPからthatの1、2でpushした値が呼び出されていないといけないのに、SPが逆戻りしてしまう問題が発生した。これはSPを戻さなかったaddにあるか、that(argument, local, this, that)に問題があるかのどちらかだろう。