コンピューター理論、チョットデキルようになりたい

コンピュータサイエンスの学び直しです

学び直し35日目:7章 バーチャルマシン#1:背景

記録

コンパイラ構築に向けた始めの一歩として、バーチャルマシンを学ぶ。高水準プログラムを機械語へ一気に変換するのではなく、その間に中間コードを設けるらしい。高水準プログラムから中間コードへ、中間コードから機械語へと変換していく。

バーチャルマシン(Virtural Machine, VM

概要

中間コードは実際のプラットフォーム上で実行されない。代わりに、バーチャルマシン上で実行されるように設計されている。バーチャルマシンは実際には存在しない抽象化された(中間コードを入れたらそれに応じて何かしら返してくれる)コンピュータとのこと。

中間にワンクッション挟むことで、高水準言語と機械語の組み合わせによる依存性を分離できる。これにより高水準言語をいろんなところに使いまわせるようになる。つまり、「移植性」がよくなる。

「高水準言語→バーチャルマシン」と「バーチャルマシン→機械語」のふたつのステージを独立して考えることができる。

VM 言語

バーチャルマシンは「言語」を持っている。これが VM 言語。「算術」「メモリアクセス」「プログラムフロー」「サブルーチン呼び出し」のためのコマンドが含まれる。VM 言語を機械語に変換する、VM変換器というものを作ることになる。

VM 実装を備えるコンピュータやデジタル機器であれば、他の機器向けに作ったソフトウェア資産を流用できるとのこと。ひとつの共通ルールに従っていると、いろんなところで使いまわしが効くってことかな。

スタックマシン

スタックいうデータ構造を用いた算術モデルをスタックマシンという。スタックの説明は端折ります。かの有名な Last In First Out のデータ構造のことです。

VM言語で「算術」「メモリアクセス」「プログラムフロー」「サブルーチン呼び出し」を行うために用いられている。競プロでやってたことって、このあたりでとても活きてきそう。

今日の筋トレ

リングフィットアドベンチャー