• ベストアンサー

retやretfについて。

アセンブリ言語では、retとretfとはどういう事でしょうか?nearリターンとfarリターンの違いは何でしょうか?教えていただけないでしょうか?すみません。 nearは現在のセグメント内で戻る。 farの方は、セグメントも復元して戻る。 の違いだと。 直訳するとセグメントは分割ですが、nearは現在の分割に戻る。farは、分割も復元して戻る。という意味になると思うのですが、どういう事でしょうか?差し支えなければ教えていただけないでしょうか?すみません。

質問者が選んだベストアンサー

  • ベストアンサー
  • hiodraiu
  • ベストアンサー率15% (451/2846)
回答No.1

CPUのアーキテクチャを理解してからでないと、説明しても理解できないと思います。逆にアーキテクチャを理解すれば、セグメントやnearやfarといった言葉の意味が理解でき、こういった疑問は出てこないと思います。 部分的な話の前に全体を理解すべきだと思います。

zasx1097
質問者

補足

で、nearリータンは、0〜65535以内にあって、farリターンはセグメントが関係ないというのは本当でしょうか?この解釈であっていますでしょうか?教えていただけないでしょうか?すみません。

その他の回答 (2)

  • _kappe_
  • ベストアンサー率68% (1581/2304)
回答No.3

一つ一つの命令について質問する前に、x86アーキテクチャの全体的なことを一通り学習することをお勧めします。そのほうが理解が進むと思います。 たとえばhttps://okwave.jp/qa/q9893184.htmlの回答No.2でも紹介した「はじめて読む486」を読んでみてください。電子書籍版もありますし、図書館や古書店で探すのでもいいでしょう。 https://www.amazon.co.jp/dp/B00OCF5YUA 付け加えると、セグメントという概念を持っているCPUはx86系以外にはほぼ残っていないので、x86の機械語でプログラムを書かない人には使いどころのない知識です。

  • hiodraiu
  • ベストアンサー率15% (451/2846)
回答No.2

No.1です > nearリータンは、0〜65535以内 セグメントのサイズによって範囲は変わりますし、ここで書かれた範囲が相対値なのか絶対値なのか何なのか分からないので正しいとも間違っているとも言えません。 > farリターンはセグメントが関係ない Cセグの値も使います。

関連するQ&A