一からコンピュータを作るぞ! ~機械語、コンピュータアーキテクチャ~


下記の資料を参考にした。
コンピュータシステムの理論と実装 4章 機械語
コンピュータシステムの理論と実装 - 資料一覧 - connpass

機械語

  • コンピュータにおけるハードウェアとソフトウェアの重要なインターフェースの役割をもつ
  • プロセッサ(CPU) と レジスタ を⽤いて、 メモリ を操作する
  • 各セルは ワード と呼ぶ

英語だけれども、下記がよくまとまっています。
Machine Language

全体像

Jack

メモリアクセス

  • 直接アドレッシング
  • イミディエイトアドレッシング
  • 間接アドレッシング
    • ポインタを扱うのに用いられる

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
  • データメモリ
  • 命令メモリ

ノイマン型アーキテクチャ

メモリ

  • データメモリ
  • 命令メモリ

レジスタ

  • レジスタは単純な計算を行うためのパフォーマンス向上に役立つ
  • レジスタは通常複数存在する

データレジスタ

計算結果を一時的に格納しておく場所

アドレスレジスタ

メモリにアクセスするためのアドレスを格納しておく場所

プログラムカウンタレジスタ

命令メモリから次にフェッチすべきアドレスを格納しておく場所

メモリとレジスタの違い

  • レジスタはメモリデータを素早くより出すことが可能
  • レジスタはメモリよりも容量が少ない

Computer system5