Menu
Coddy logo textTech

レジスタ vs メモリ

CoddyのAssemblyジャーニー「基礎」セクションの一部。レッスン 3/45。

コンピューター内でデータが存在できる2つの場所について学びました。

  • レジスタ:CPU内部にある小さな記憶ボックス
  • メモリ(RAM):CPUの外部にある、番号付きスロットが並ぶ巨大なグリッド

しかし、なぜ2か所あるのでしょうか?なぜCPUはメモリと直接処理できないのでしょうか?

答えは速度です。レジスタはCPUの内部にあるため、非常に高速です。メモリは外部にあるため、より低速です。CPUは1サイクルでレジスタにアクセスできますが、メモリへのアクセスにははるかに長い時間がかかります。

並べて比較:

特徴レジスタメモリ(RAM)
場所CPU内部CPU外部
速度非常に高速(1サイクル)低速(多数のサイクル)
記憶スロットの数非常に少ない(x86-64では16~32)数百万または数十億
各スロットのサイズ8バイト(64ビット)1バイト
アクセス方法名前でアクセス(raxrbxrcx...)アドレスでアクセス(1000msgbuffer
揮発性?はい(電源を切ると消える)はい(電源を切ると消える)

アセンブリにおける最も重要なルール:

CPUはメモリ内のデータを直接操作できません。まずデータをレジスタにロードする必要があります。

これは任意ではありません。CPUはそのように設計されています。すべての加算、すべての比較、すべてのデータの移動は、レジスタを通じて行わなければなりません。

常に使用する3段階のパターン:

手順処理内容
1. LOADメモリからレジスタにデータをコピーするmov rax, [count]
2. WORKレジスタに対して何らかの処理を行うadd rax, 5
3. STORE結果をメモリに戻してコピーする(必要な場合)mov [result], rax

このルールを忘れるとどうなりますか?

メモリ内にある2つの数値を加算しようとすると、アセンブラはエラーを出します。CPUは単純にそれを実行できません。まず、それらをレジスタに読み込む必要があります。

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Assemblyプレイグラウンド