![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.3ベストアンサー
- 回答日時:
アセンブラレベルでは、アドレスの指定方法が大きく分けて相対アドレスと絶対アドレスがあることは知っていますか?
プログラムが1000番地から1999番地にロードされることを期待していて、goto命令の飛び先が絶対アドレス指定で1500番地だとします。
リロケータブルでない場合、プログラムが2000番地から2999番地にロードされても飛び先は1500番地のまま調整されないので、1500番地に飛びます。が、1500番地にはプログラムが無い=何があるかは不定なので、その後どうなるかは不定=ほぼ暴走になります。
リロケータブルの場合、大抵は相対アドレス指定されているはずなので、2500番地に飛ぶことになり、ここにはプログラムがあるので正常に処理が続けられます。
飛び先だけでなく、作業用のメモリも同様にでたらめな所を参照することになるので、誤動作の原因となります。
No.2
- 回答日時:
リロケータブルでないプログラムを期待されない領域にロードして実行すると、普通は暴走します。
例としてはgoto(jump)命令(ループ制御等に隠れたgoto含む)などのとび先に本来のプログラムがないので、どんな動きをするのかわかりません。
また、普通、プログラムは常に一定のメモリ領域にロードされることを期待できません。OSのコア部分のサイズが変わったり、各種ドライバの使用状況によってユーザープログラムが使用できるメモリの領域が変化するためです。
でも、最近のCPU/OSはメモリの仮想化(論理アドレスー物理アドレス変換・管理)ができるので、常に同じ論理アドレスで実行されることを期待してもいいのかもしれません。
この回答へのお礼
お礼日時:2006/10/17 22:30
ありがとうございます。本来のプログラムというところがよくわからなかったのですが、どういうことでしょうか?プログラムがメモリ上のどんな位置にロードされたとしてもでGOTOが使われたときは普通にそこにとぶだけではないのでしょうか?すいませんが、まだよくわかっていないみたいなのでもう少し詳しくお願いできますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サーバー用メモリとデスクトッ...
-
パソコンのメモリについて、3枚...
-
パソコンのメモリ増設をやると...
-
DELLのLATITUDE E5530を最大限...
-
core i9 9900k windows11アップ...
-
PC版Apex Legendsをプレイ中に...
-
Windows11アップデート後の不具...
-
ECC対応のメモリは非ECC対応の...
-
asus h270 pro 対応のオススメ...
-
メモリーで空きスロット1、現在...
-
メモリ追加時に発生するブルー...
-
Memteste86と86+は何が違うの?
-
10年前のCPUを使っています...
-
CPUやメモリの使用率はどこから...
-
ASROCK Z370 PRO4 メモリ選び
-
FEM解析とCPU
-
初期化後PCが重くなった
-
メモリの増設を考えています。
-
映像編集ソフトshotcutを無難に...
-
メモリのOC
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サーバー用メモリとデスクトッ...
-
ECC対応のメモリは非ECC対応の...
-
パソコンのメモリについて、3枚...
-
CPUやメモリの使用率はどこから...
-
Windows11アップデート後の不具...
-
メモリーで空きスロット1、現在...
-
メモリが4GBしかつかえない
-
cpuの最大メモリ容量が32gbの場...
-
YouTube8kをGT1030 i7-4790k メ...
-
エクセル 強化するならcpuかメ...
-
Steamの方でニーアオートマタを...
-
デスクトップPCのメモリ交換後...
-
PC3-8500S の最後のSの意味は?
-
PC版Apex Legendsをプレイ中に...
-
キャッシュ済み領域はメモリ不...
-
初期化後PCが重くなった
-
画像生成AIで、パソコンのメイ...
-
パソコン CPU使用率
-
メモリ追加時に発生するブルー...
-
映像編集ソフトshotcutを無難に...
おすすめ情報