個人ブログのようなものです。とくにジャンルはありません。
広告枠
記事の概要
作成日:2020-08-19
最終更新日:2020-08-19
記事の文字数:2001
CPU-アドレス指定方式
概要

CPUがメモリからデータを取得する際に、メモリ上のどこにそのデータがあるのかを算出する必要がある。
そのメモリ上のアドレスを表す方式はいくつかあり、それらをまとめて「アドレス指定方式」という。
ここではそのアドレス指定方式についてまとめている。
CPUがどのように命令を実行するかは別記事「CPU命令実行の流れ」を参照。
アドレス指定方式一覧

「アドレス指定方式」は大きく以下の4つ(細かく言うと6つ)に分類される。
各アドレス指定方式の詳細は後述するため、ここではあまり理解しなくても大丈夫。
  1. 即値アドレス指定方式…命令の命令部に直接値を入れている方式。メモリへのアクセスは行われないため超高速。
  2. 直接アドレス指定方式…命令の命令部にメモリ上のアドレスが入っている。デメリットが大きく、実際にはあまり使われない。
  3. 間接アドレス指定方式…命令の命令部にメモリ上のアドレスが入っており、そこにはまた別のメモリのアドレスが入っている。大容量メモリに対応する。
  4. 修飾アドレス指定方式…命令の命令部にメモリ上のアドレスが入っており、そのアドレスにレジスタに入っている値を足すことで、メモリ上のアドレスを割り出す。更に3つのアドレス指定方式に分類される。

即値アドレス指定方式

「即値アドレス指定方式」は「命令レジスタ」の「オペランド部」に入った値をそのまま計算に使用する方式。
画像クリックで等倍

以下のような特徴を持つ。
・メモリを介さないので超高速
・メモリ上のどこにプログラムが読み込まれても問題なし(再配置可能
・「命令レジスタ」の限られた領域にデータを入れるため、サイズの大きなデータは使えない
直接アドレス指定方式

「直接アドレス指定方式」は「命令レジスタ」の「オペランド部」に入った値でメモリを参照する方式。
画像クリックで等倍

以下のような特徴を持つ。
・メモリへのアクセスが1回のみのため高速
・メモリへの絶対アドレスが入っているため、メモリ上で読み込まれる場所が変わると動かない(再配置不可
・「命令レジスタ」の限られた領域にメモリのアドレスを入れるため、大容量のメモリには使えない
・デメリットが大きいため現実にはあまり使われない
間接アドレス指定方式

「間接アドレス指定方式」は「命令レジスタ」の「オペランド部」に入った値でメモリを参照し、更にその値でメモリの別のアドレスを参照する方式。
画像クリックで等倍

以下のような特徴を持つ。
・メモリへのアクセスが2回以上あるため遅い
・メモリへの絶対アドレスが入っているため、メモリ上で読み込まれる場所が変わると動かない(再配置不可
・メモリ上のアドレスをメモリに直接保存できるため、大容量のメモリにも対応する
修飾アドレス指定方式

ベース(基底)アドレス指定方式

「ベースアドレス指定方式」「ベースレジスタ」に入っている値と、「命令レジスタ」の「オペランド部」に入った値を足し合わせた値でメモリを参照する方式。
「ベースレジスタ」にはそのプログラムの先頭アドレスが入っている。
画像クリックで等倍

以下のような特徴を持つ。
・メモリへのアクセスが1回のみのためそこそこ高速
・メモリ上のどこにプログラムが読み込まれても、ベースレジスタにそのプログラムの先頭アドレスが入っているため問題なし(再配置可能
自己相対アドレス指定方式

「ベースアドレス指定方式」「プログラムカウンタ」に入っている値と、「命令レジスタ」の「オペランド部」に入った値を足し合わせた値でメモリを参照する方式。
「プログラムカウンタ」にはその命令が格納されているアドレスが入っている。
画像クリックで等倍

以下のような特徴を持つ。
・メモリへのアクセスが1回のみのためそこそこ高速
・メモリ上のどこにプログラムが読み込まれても、「プログラムカウンタ」にその命令のアドレスが入っているため問題なし(再配置可能
ベースレジスタが無いCPUでも利用可能
インデックス(指標)アドレス指定方式

「インデックス指定方式」「インデックスレジスタ」に入っている値と、「命令レジスタ」の「オペランド部」に入った値を足し合わせた値でメモリを参照する方式。
画像クリックで等倍

以下のような特徴を持つ。
・メモリへのアクセスが1回のみのためそこそこ高速
・連続したデータ(配列など)の取り扱いが得意
アドレス指定方式の複合

上述のアドレス指定方式は複合して利用することもできる。
例えば「インデックス(指標)アドレス指定方式」+「ベースアドレス指定方式」など。
再配置可能(リロケータブル)

プログラムはメモリ上で必ずしも常に同じ位置に読み込まれるとは限らない。
このメモリで読み込まれる位置が変わっても変わらずプログラムが動き続けられる性質を「再配置可能性」という。
広告枠
関連ページ
SNSツイート一元化対応(Twitter・Misskey・Mastodon・Bluesky)-Python
概要 概要 SNSのツイートを一元化する際の備忘録というかPythonコードの共有です。 それぞれ…
Windows-PowerShellを使用してのフォルダ内のファイル名を連番にリネームする
以下PowerShellコードを実行することで、フォルダ内のすべてのファイルのファイル名を「0001…
SCSSとやらでメディアクエリと疑似要素の組み合わせに小一時間苦戦したという話
SCSSとやらでメディアクエリと疑似要素の組み合わせに小一時間苦戦したという話 当然ですが本サイト…
ボタンを押す演出でCSSのtranslateYやtopを使用することの問題
ボタンを押す演出でCSSのtranslateYやtopを使用することの問題…
東京03のyoutubeチャンネルの概要ページの挙動がおかしい
東京03のyoutubeチャンネルの概要ページの挙動がおかしい…
Youtube Data APIでハンドルIDからユーザ情報を取得できない
Youtube Data APIでハンドルIDからユーザ情報を取得できない問題 結論から言うと現在…
ウマ娘まとめサイト(InoReader)
ウマ娘まとめサイト(InoReader)…
ウマ娘まとめサイト(Feedly)
ウマ娘まとめサイト(Feedly)…
Pythonを使ってinoreaderでサイトの更新情報を取得してみた
inoreader(イノリーダー?)が公開しているWeb APIを使用して、Pythonで自動的にサ…
Pythonを使ってFeedlyでサイトの更新情報を取得してみた
Pythonを使ってFeedlyでサイトの更新情報を取得してみた…
関連タグ
情報技術
管理人ツイート
最新ページ
怖い話まとめ
最初に 怪談系の怖い話を載せています。 特に設定部分は人の手が入ってますが、生成AI(ChatGP…
VRoidを使う前に絶対に表情はいじった方が良いと思うという話
デフォルトのVRoidの表情はすごいVRoidっぽい VRoidStudioでは「楽しい」「悲しい…
Twitter:【日替わり】一問一答自己紹介テーマ
Twitter:【日替わり】一問一答自己紹介テーマ 日替わりで簡単な質問が表示されます。 毎日つぶ…
アークナイツ-2024大感謝祭・秋商品-理性換算
概要 "2024大感謝祭・秋でお得な商品はどれか"というのを理性に換算して一覧化したものとなります…
本サイトについて
本サイトの概要 個人ブログのようなものです。とくにジャンルはありません。 本サイト内の情報について…
制作物一覧
以下に移動しました こちらに移動しました。 …
SNSツイート一元化対応(Twitter・Misskey・Mastodon・Bluesky)-Python
概要 概要 SNSのツイートを一元化する際の備忘録というかPythonコードの共有です。 それぞれ…
NovelAI R18イラスト集
概要 『NovelAI』で作成したR18イラストの寄せ集めです。 全81枚。 R18なので満18歳…
NovelAI イラスト集
概要 『NovelAI』で作成したイラストの寄せ集めです。 別で失敗集も上げていますが、こちらはそ…
Windows-PowerShellを使用してのフォルダ内のファイル名を連番にリネームする
以下PowerShellコードを実行することで、フォルダ内のすべてのファイルのファイル名を「0001…
コメントログ
コメント投稿




本サイトのタグ一覧
タグを表示する NovelAIR18VRoidWebサイト作成Webツールアークナイツアークナイツ-ステージ攻略日記アズールレーンアズールレーン-日記ウマ娘ギャラリーゲームデビラビローグホラーポケットタウン気ままな日記情報技術情報技術-WebAPI知的財産権統合戦略白夜極光本サイトについて魔王スライム様がんばる!漫画
広告枠