
目次
間接アドレス指定
間接アドレス指定とは
「住所を教えてもらうための住所」を使う方法。
例えば
〈あなたが友達の家に行きたい場合〉
友達の住所を直接知らない→共通の友達に「友達の住所を教えて」と頼む。
共通の友達が【間接アドレス】に相当するよ。
ITでも同じように、
データの場所を直接指定するのではなく、まずその場所を教えてくれる「住所」を使ってデータにアクセスする方法。
これにより、データの場所が変わっても、間接アドレスを更新するだけで済むので便利だよ。
メリットとデメリット
〈柔軟性〉
データのアドレスを間接的に指定するため、プログラムの柔軟性が高まる
データの位置が変更されても、プログラムの修正が少なくて済む
〈メモリの効率的な利用〉
大きなデータ構造や動的に変わるデータに対して有効
特に、リンクリストやツリー構造などのデータ構造で便利
〈アクセス速度の低下〉
直接アドレス指定に比べて、メモリアクセスが二段階になるため、アクセス速度が遅くなる
〈複雑性の増加〉
プログラムの理解やデバッグが難しくなることがある
間接的なアドレス指定は、プログラムの流れを追うのが難しくなることがある
会話で学ぼ
基礎知識編
普通のアドレス指定は、
直接メモリの場所を指定するんだけど、
間接アドレス指定は、
まずある場所に行って、
その場所に書かれているアドレスを使って
さらに別の場所に行くんだ。
もう少し簡単に教えて!
郵便物を送るときに、
直接住所を書くのが普通のアドレス指定。
間接アドレス指定は、
まず郵便局に行って、
そこにあるリストを見て、
リストに書かれている住所に送るような感じかな。
一度中継地点を経由するってこと?
間接アドレス指定は、
プログラムの柔軟性を高めたり、
メモリの効率的な利用を助けるために使われるんだよ。
難易度高め編
データの場所を指定する方法の一つだよ。
「データの場所を指定する方法」というのはどういうこと?
「命令部」と「オペランド部」に分かれてるんだ。
「命令部」は
CPUに何をするかを伝える部分で、
「オペランド部」は
処理対象のデータやその場所を伝える部分だよ。
「オペランド部」には様々な指定方法があって、
その中の一つが【関節アドレス指定】なんだ。
オペランド部に何が入ってるの?
でも、そのアドレスには
データそのものではなくて、
別のメモリのアドレスが入ってるんだ。
そして、その「別のメモリのアドレス」にデータが入ってるんだ。
そんな回りくどいことをするの?
例えば
データがメモリ上で移動や変更される場合にも、
「オペランド部」に書き換える必要がないんだ。
同じデータを複数の命令で使う場合にも、
「オペランド部」に同じ値を書くだけで済むよ。
どんな場面で使われるの?
プログラミング言語でよく使われるよ。
また、動的なメモリ管理やシンボルテーブルなどのコンパイラやインタプリタの実装でも使われるよ。
SNSで発信
X(元Twitter)
YouTubeショート
インスタグラム
https://www.instagram.com/reel/CzHv-KwPYn3/?igshid=MzRlODBiNWFlZA==
tiktok
https://vt.tiktok.com/ZSNAAaAfX/
https://www.facebook.com/share/r/7ygGiGvff6edcKf9/
スレッズ
https://www.threads.net/@konomimoni/post/CxoNaXHSZr8/?igshid=NTc4MTIwNjQ2YQ==
あとがき
このサイトは
「デジタル難民のばあば」と「パソコンやスマホをあまり得意としない方々」が一緒になって
少しずつ、ヒントもしくは知識を共有していくサイトです。
知識を楽しく学びながら、棺桶に足を突っ込むその日まで、一緒に成長してまいりましょう。
最後まで読んでいただきありがとうございました♡