第8話 オタクの仕事っぷり
プログラムは書いたそのままではコンピューターで実行できない。コンピューターが理解できる 0 と 1 だけで構成されるマシン語に変換しなくてはならないのだ。マシン語にするには、まず俺たちが C 系言語で書いたコードを
俺は書き上がったコードを手動でコンパイルした。
城崎には「キモい」と言われるが、俺はよくコンパイル後のアセンブリ言語とマシン語を目視でチェックしていた。これはマシン レベルでの処理、特に数値の処理を最適化するためだった。
例えば、ある数値 A に 16 を掛けた結果が欲しい場合のコンピューターの動作はこんな風になる。
まず、レジスタと呼ばれる領域 1 に A を入れ、次にレジスタ 2 に 16 を入れる。それからレジスタ 1 と 2 の掛け算をして結果をレジスタ 3 に入れる。
これらはすべて 0 と 1 の二進数で処理される。この方法だと掛け算の処理をするときの CPU の実行サイクルが長くなる。0 と 1 を置き換える手順が増えるからだ。
しかし、掛け算をする代わりに、レジスタ 1 に入っている二進数値を shift コマンドで四桁左送りにすると同じ結果が得られる。これだけで実行サイクルは二倍以上の早さになる。細かいことだが塵も積もれば山となるで、サクサク動くゲームを作るには、こういうちまちまとした工夫が大切なのだ。これを最適化という。
最適化はコンパイラでもできるが、それは機械翻訳と似ている。出来上がったコードに矛盾が組み込まれてしまうこともあるし、一部のコードが消えてしまうこともある。
もちろん、膨大なコードをすべてチェックすることはできないので、整合性を自動的にチェックしてくれる機能や、エラーを検出してくれる機能を使う。
俺はわかるところはマシン語になったときの動作も見込んでコードを書いているが、マシン語に落とすまでは予測できないこともあるので、こうしてできる限り自分で見てチェックしていくのだ。
トルクのテストは無事終わり、実機での動作も確認できた。試しに何度かこのシーンをプレイもしてみたが、すべての回においてトルクは無事に(?)死んだ。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます