自作Cコンパイラ
自作Cコンパイラでは、2kmccをコンパイルしてみて、エラーが出た箇所を修正していくという方針で進めました。プロトタイプ宣言を実装しました。と言っても戻り値の型しか見ていません。関数を呼び出す時、戻り値の型がわかっていないと戻り値のためにどれぐらいのメモリ領域が必要か決定できません。逆に呼び出す引数のデータ型はわかっていなくても、実引数から必要なメモリ領域がわかります(実引数が正しいという条件のもと)。そのため、とりあえずプロトタイプ宣言では戻り値のみ使用することにしました。
細かな修正として、2kmccの1000行を超えるプログラムをコンパイルしたことがなかったため、グローバル変数で確保した領域が枯渇し、セグフォで落ちました。グローバル変数が足りなくなったらエラーを表示するように変更しました。
また、文字列リテラルをchar型のポインタではなく、char型の配列として処理するように変更しました。こうすることで、return &"rdi\0rsi\0rdx\0rcx\0r8 \0r9"[4 * n];
といった文を適切に評価することができます。
関数の引数で関数が呼び出されても正常に動作するように変更しました。
これらの修正を加えるとエラーなく2kmccをコンパイルすることができるようになりました。コンパイルした2kmccでは、まだint main(void){return 5;}
などの単純な文しか正常に動かず、関数の呼び出しなどではセグフォなどで落ちてしまします。これらの問題点を改良していきたいです。
卓球部
11月3日に卓球部の練習試合がありました。結果は全敗、1セットだけ取りました。
試合に参加して思ったことは、上手い人ほど足が動いているのが実感できました。上手な人はサーブを打った後はすぐに安定した場所に移動しています。安定した場所とは、どこに打ち返されても手が届く場所ということです。私の場合、サーブを打ったらほぼそのままその場所を動いていませんでした。また上手な人は決め球を決して逃さないとうことです。相手がミスった珠に対しては丁寧に決めていました。私の課題は足が動いていない、サーブが長い、ドライブでボールを弾いてしまっているなどです。
課題が多く見つかり、全敗したわけですが、めちゃくちゃ楽しかったです。初めての相手と当たると、どのような種類のサーブが有り、どのボールが好きで、どのコースが苦手なのか分析しながら卓球をすることができます。分析するのは本当に楽しい!!しかしその分析結果を基に、技などを実現する技術はありません….
GitHub Page更新
このサイトのtagを一覧で表示するページを変更しました。今まではtag名のみ表示していましたが、tagの説明も加えて表示されるようにしました。JekyllではLiquidというテンプレート言語を使用しているそうです。その言語と、Variablesという変数を組み合わせ、tagの説明をいい感じに取得し、表示させました。JekyllではsiteがWebサイトを全てを指し、postがsiteの中にあるブログのような投稿記事、pageがsiteの中にある固定ページであるという考えがあるようです。(多分です)
その他
- Git, GitHubをUSBに入れて持ち運ぶという記事を作成しました( »> 記事はこちら)。もともとはTeamsをUSBに入れて持ち運べるようにしたかったのですが。結局USBの転送速度がボトルネックになり実現できませんでした。
git rebase
でGitのコミット履歴を変更する手法を学びました。ブランチを切り替える前にコミットを複数個してしまいましたが、git rebase
で切り替え先のブランチに切り替え前のブランチにあるコミットを移動させ、git rebase -i
で切り替え前のブランチのコミットを削除することで、正しくブランチを切り替えた状態でコミットしている状態にすることができました。- 主メモリが足りなくなったら使用するためのswapファイルがあります。VMを複数個立てると主メモリが足りなくなり、さらにswapメモリも足りなくなり何度か落ちました。そこで、swapメモリの容量を増やしました( »> 参考サイト)。成功。
- Avalonia UIという技術に触れたい