久々に競プロ環境を整備し直したのでメモしておく。以下、WSL2 (Ubuntu 18.04.1) と VSCode という環境下で、C++17 を用いて問題を解く際の環境設定を記載する。 VSCode のエディタ設定 昨年 9 月のアップデートから公式で提供されるようになった editor.bracketPairColorization.enabled を用いれば対応する括弧の色付け...
コンピュータシステムの理論と実装 (6)
6 章 アセンブラ 前章までで CPU や Computer の実装が終わり、ハードウェアは完成した。次はソフトウェア部分ということで、一番下のレイヤであるアセンブラを書いていく。この章以降は HDL から離れて好きな言語でコードを書けることになるため、文字列操作に慣れた Python を使うことにした。 コマンドの判別 本書で用いられている機械語は 1 行 1 コマンドであり、@ で開...
コンピュータシステムの理論と実装 (5)
5 章 コンピュータアーキテクチャ 本章ではついにメモリ、CPU を実装していく。 メモリの実装 基本的に p99 の仕様に従って書いていけばよい。まずは入力として与えられたアドレスがどのメモリマップに位置するかを判定する必要があるが、0-16383 が RAM に、16384-24575 がスクリーンに、24576 以降がキーボードに割り振られていることを考慮すると以下のような...
コンピュータシステムの理論と実装 (4)
4 章 機械語 本章では Hack 機械語 というアセンブリ言語を書いていく。A がそのとき指しているアドレスの値、M がアドレス A が指しているメモリワードの値、D は値を格納できる変数のようなものと考えるとわかりやすい。 基本的に 1 や 0 以外の定数をそのまま計算に使うことはできないので、例えば定数を D に代入したい場合は @5 D = M などとするしかない...
コンピュータシステムの理論と実装 (3)
3 章 順序回路 今回は前章まで作成した「組み合わせ回路」と違って「順序回路」を作っていく。フリップフロップ (1 ビットの入力とクロック入力を受け取り、前のタイムポイントでの入力を出力する) は所与のものとして扱う。 まずは 1 bit レジスタを作成する。1 ビットの入力と load ビットを受け取り、load ビットが 1 の場合値を更新、0 の場合入力は無視される。これも...
コンピュータシステムの理論と実装 (2)
あけましておめでとうではあるが、特に新年感もなく粛々と復習を続けていく。今日は第 2 章、ブール算術から。 2 章 ブール算術 加算器 $n$ ビットの 2 進数加算をする場合を考える。2 つのビットの和を求める半加算器 (half adder) が必要なのはまあ当たり前である。足し算の筆算的に最下位ビットから計算していくことを考えると、2 つのビットと繰り上がり (キャ...
コンピュータシステムの理論と実装 (1)
年末年始を利用して、2 年くらい前に買ったこの本を読んでいく。 コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方 | Noam Nisan, Shimon Schocken, 斎藤 康毅 |本 | 通販 | Amazon NAND ゲートのみが与えられた状態で、論理回路、加算器、ALU、C...
IoT を使って嫌でも風呂に入らざるを得ないようにする
概要 今に始まったことではないが、入浴というものが基本的にあまり好きではない (入浴より重要でかつ楽しいことはたくさんあるので)。現代を生きている人間である以上回避不可能なイベントなのでしゃーなし毎朝シャワーを浴びてはいるものの、億劫すぎて毎日ギリギリまで入浴を引き延ばした挙句髪のセットがおろそかになり、結果的に崩壊したヘアスタイルでの出勤を余儀なくされている。今回はこのような状況を打破すべ...
「麻酔科研修 30 日ドリル」を読んだ
麻酔科研修が終わってからなので完全にやる気を失っているが、標記の本を読んだ (というかこなした) ので簡単にまとめておく。 100倍楽しくなる麻酔科研修30日ドリル | 青山 和義, 讃岐 美智義 |本 | 通販 | Amazon 概要 購入動機:麻酔科研修開始前に本書の姉妹本「麻酔科研修チェックノ...
Amazon Prime Video の Watch Party でチャット履歴を保存する
動機 最近 Amazon Prime Video で動画を複数人で同時視聴できるサービス (Watch Party) を使い始めた。再生しながら視聴者どうしでチャットができるという便利なものなのだが、ホストが Watch Party を終了させるとチャット履歴が消失するという問題がある。そこで、Watch Party のページをスクレイピングすることによりチャット履歴を記録したテキストファイ...