2022-01-01から1年間の記事一覧

2022年の振り返り

2022年の振り返りをします。 作ったもの、触ったもの コンピュータシステムの理論と実装をやった。HDLから初めて、NANDの組み合わせでCPUを作り、アセンブラ、仮想マシン、コンパイラを作っていくというもの。とりあえず動くコンパイラっぽいものができて非…

Jackコンパイラ作成(途中)

コンピュータシステムの理論と実装を続けてます。 今はJack言語のコンパイルを作成中で、構文解析を組んでいるところ。 ATSを作らずに、解析したすぐ側から構造をXMLに出力してたんだけど、それだと先読みが必要なノードでうまくいかないとわかって調整中。 …

Go言語に少し触れた

昨日、A Tour of Goを少しみてみた。 パラパラとめくりながらfor文あたりまで読んでみたけど、なかなか良いと思った。コンパイル言語っぽいし、身につけるのもありかな。 個人的に良いなと思った部分。 ・型宣言 識別子、型の順番に定義するところ。たしかに…

コンピュータシステムの理論と実装(3)

昨日はVMのStaticsTestを通すことができた。 StaticsTestはStaticセグメントへのリードライトのテストで、staticセグメントのスコープがちゃんと処理できているか?のテストだと思う。 初め、処理が全部終了しても、staticセグメントからスタックにとってき…

コンピュータシステムの理論と実装(1)

昨日はプロジェクト8のFibonacciFunctionのテストが通った。2日くらいかかってしまった。 VMのeq、lt、gt命令の実装がバグってて、正しいアセンブラをはけてなかった。 次はstatic変数を使うテストみたい。何も考えずにテスト通してみたら通らなかった。また…

ファイル読み切ったあとのstd::ifstream::seekg()がうまく動かない

少し前に悩んでました。 ファイル終端まで読み切るとeofフラグが立ってしまうから、そのままだとシークできないみたいです。 一旦ifstream::clear()をしてフラグを落としてやればシークできるようになりました。 どうもファイル終端まで一度読んでしまうと、…

Makefile書き方メモ

Makefileを書く上での個人的なメモ書きをしておきます。だんだん書いていきます。 以下の例では、空白をスペースで書いていますが、 Makefileはスペースではなくtab文字でないとかけないはずなので、 コピペしたい人は気をつけてください。 (写経するか、コ…