自作Cコンパイラ

負の数を扱えるようにすることで、ついに2kmccを自作コンパイラでコンパイルすることができました!!よく頑張った!!まじでよく頑張った!!
今週の主な変更点を説明します。符号拡張、ゼロ拡張を行えるようにしました。1byte, 4byte, 8byteのサイズをレジスタが指すメモリアドレスから取り出し、8byteレジスタ(今回はrax)に代入する時、以下のようにすると1byteのときには1byte以外の上位7byteには前の不定な値が格納されています。4byteのときには上位4byteには0で埋め尽く(ゼロ拡張)されています。これでは負の数を扱えません。また文字列を扱う際に不便なので、変更します。

# 1byte
mov al , [rax]
# 4byte
mov eax, [rax]
# 8byte
mov rax, [rax]

以下のように変更することで、対応できます。movzx(Move byte to quadword, zero-extension)はゼロ拡張を行い、movsxd(Move doubleword to quadword with signextension)は符号拡張を行います。1byteではゼロ拡張を使用します。この理由は1byteを扱うときはchar型のときだからです。また4byteの時、符号拡張するのは、負の数を扱うようにするためです。

# 1byte
mov al , [rax] -> movzx rax, BYTE PTR [rax]
# 4byte
mov eax, [rax] -> movsxd rax, DWORD PTR [rax]
# 8byte
mov rax, [rax]

以下の動画は私が作ったテストケースと、2kmccをコンパイルしている様子です。

直近の課題として、フラグレジスタのCarryとOverflowの違いがよくわからなかったので、その違いを調べたいです。そして最終目標は、セルフホストを実現させることです。頑張ろー!!

英検

11月13日、英検の二次試験がありました。高専祭とかぶっており、忙しかったです。ようやく一段落したという感じです。(英検に関する記事はこちら -> 英検準2級への挑戦)

高専祭

ゆめくじらでプログラミングコンテスト

ゆめくじらでプログラミングコンテストを実施しました。(詳細はこちら -> [ゆめくじらプログラミングコンテスト2023])以下にパンフレットの写真を掲載しておきます。ちなみに「大成功」です pamphlet pamphlet pamphlet

プログラミングコンテストが終わった後、協賛企業の方に焼肉を食べさせてもらいました。とてつもなく美味しかったです。
yakiniku yakiniku yakiniku 焼肉を食べている最中に、来年のコンテストについて、私が思っていることを話しました。私が思っていることは以下の通りです。

  • ゆめくじら側もコンテスト運営側ではなく、開発者側でありたい
    • 運営を行う力も必要だが、この若い年齢のときは、開発を行い技術力を上げたい
    • 誰かのためにコンテストを開催することも大切だが、自分の技術を磨くことも大切
  • ゆめくじら側の人員が足りない
    • ゆめくじらの人数が、7人ほどになる

これらを解決するため、来年は次のどちらかの形式を取りたいと話しました。

  • 協賛企業にコンテストの運営をお願いする
    • コンテストの運営を企業側に任せ、教室の確保、機材の確保などの学校側と連携する必要がある部分をゆめくじらが対応するという形です。
    • 現在はゆめくじらが運営を行っていますが、チラシの作成、景品の用意等などは協賛企業が行ってくれており、一部ゆめくじらと協賛企業で同じ作業を行っているということがありました。そこで全部まとめて、役割分担を明確にし、効率化したいという思いも含まれています。
    • またコンテスト前に行っていた講座を、ゆめくじら側枠を作り、講座を手伝いたいと伝えました。そうすることでゆめくじら側の技術力が向上することにつながると思ったからです。
  • コンテストの内容を固定化する
    • このコンテストでは、毎年コンテストのビジョンや、コンセプトを0から考えています。そしてそのコンセプトなどを基にコンテストの部門を作っています。そのため毎年、部門が違います。これらの作業は膨大です。
    • そこで、毎年定番のコンテストのような位置づけを確立し、コンテストのビジョン、コンセプトを固定化し、部門も固定化するというものです。

このような話を協賛企業にお話すると、とても理解してくれました。今後反省会を行った後のタイミングで、今後どうするかを話し合っていこうということになりました。勇気を振り絞って伝えてよかった!

スーパーボールすくい

クラスの出し物で、「秋祭り」を出しました。私達の班は秋祭りの中の「スーパーボールすくい」を出しました。想像以上に子どもたちが来てくれ、とても楽しそうでした。はじめはスーパーボールすくいのシフトなんかに入りたくないと思っていましたが、途中からこの時間が永遠に続けば良いのになあと感じるまで楽しかったです。
子供の力はすごいと思った

屋台:ベビーカステラ

卓球部の出し物で「ベビーカステラ」を出店しました。はじめは生地を作るのを担当していましたが、人手が足りないこともあり、焼くのも担当しました。結構忙しく、シフトと関係なく卓球部にいました。途中で、ハンバーガー、焼きそば、チェロスの差し入れがありました。めっちゃおいしかったです。特にチェロスは美味しかった!

その他

明日からテスト期間。。。
嘘だろ。。。
高専祭の片付けもまだしていないのにか……………..