下記の資料を参考にした。
コンピュータシステムの理論と実装 4章 機械語
コンピュータシステムの理論と実装 - 資料一覧 - connpass
機械語
- コンピュータにおけるハードウェアとソフトウェアの重要なインターフェースの役割をもつ
- プロセッサ(CPU) と レジスタ を⽤いて、 メモリ を操作する
- 各セルは ワード と呼ぶ
英語だけれども、下記がよくまとまっています。
Machine Language
全体像
メモリアクセス
- 直接アドレッシング
- イミディエイトアドレッシング
- 間接アドレッシング
- ポインタを扱うのに用いられる
Hack機械語
メモリ操作を伴うものは2回実行する必要があります。
それが、命令メモリとデータメモリになります。
Aレジスタは、命令メモリとデータメモリ、Dレジスタは、データメモリを表します。
A命令
@
-
@R2
は、変数の宣言みたいなもの -
M
は、現在のメモリレジスタを表す
@R2
M=0 // R2=0
A
アドレス
@5
のように数値だった場合は、5の2進数を レジスタに格納することになります。
C命令
comp, dest, jump
が該当し、
comp
は、計算する対象、
dest
は、計算した結果の格納場所、
jump
は、次に何を実行するか を示します。
オペランド / オペコード
オペコードは、命令の動作を表し、オペランドは、命令の対象を表します。
命令・オペランド・オペコード | ぷにぷにバイオ
第4章 基本的なアセンブリ言語プログラミング
OSを書く:初歩から一歩ずつ | POSTD
手順
- アセンブラを使って機械語に翻訳
- CPUエミュレーターを使って、
hack
ファイルのテストを行う
アセンブラとマシン語は,1対1に対応します。
【5分で覚えるIT基礎の基礎】だれでも一度はアセンブラを学んでおこう! 第1回 | 日経クロステック(xTECH)
コンピュータアーキテクチャ
ここからは第5章のお話です。
コンピュータ
- CPU
- データメモリ
- 命令メモリ
ノイマン型アーキテクチャ
メモリ
- データメモリ
- 命令メモリ
レジスタ
- レジスタは単純な計算を行うためのパフォーマンス向上に役立つ
- レジスタは通常複数存在する
データレジスタ
計算結果を一時的に格納しておく場所
アドレスレジスタ
メモリにアクセスするためのアドレスを格納しておく場所
プログラムカウンタレジスタ
命令メモリから次にフェッチすべきアドレスを格納しておく場所
メモリとレジスタの違い
- レジスタはメモリデータを素早くより出すことが可能
- レジスタはメモリよりも容量が少ない