2009-07-25 9 views
-5

、(フェッチ含む)、最悪の場合は何であるメモリの数は、この命令のアクセス:最悪の場合80×86アセンブリ内のメモリアクセス

add dword [x],0x123FA4 

ないオペランドとオペコードがあることが知られています2バイトの長さ。

+1

おそらく、あなたは、奇妙なことの説明を待ち望んでいるランダムな質問を投稿するのではなく、Intelのマニュアルを読んで自分で問題を解決しようとするべきでしょう。 –

+0

答えは8ですが、私は理由を知りません – nisnis84

+0

それは宿題ではありません 私はテストのために学習しています!!!!! – nisnis84

答えて

4

命令からは、opcodeバイト( "add")、アドレスモードバイト、x(4バイト)のオフセット、および(4バイト)==> 10バイトのオフセットがあります。 486は、4バイトのDWORD境界に合わせたバスアドレスを持つメモリから一度に4バイトを取り出します。したがって、どこに置いても、10バイトはおそらく3回のメモリ読み出し(= 10/4の切り上げ)を必要とします。しかし、オペコードバイトがDWORDの最後のバイトに配置されている場合、残りの9バイトは3になります。合計DWORD数は実際には4になります。

追加するには、場所Xをフェッチする必要があります。 XがDWORD境界を越えて分割されていると仮定 - > 2回の読み込み。定数を追加することはCPU内部で行われ、その合計は同じDWORD境界のsplit - > 2書き込みで書き戻されます。

したがって、最悪の場合は8回のメモリ操作が必要です。