前学期の情報学に関するコンピュータアーキテクチャ試験で、
「MASMの「DIVEDX」が常にプロセッサ例外を生成するのはなぜですか?」という質問があります。
例外を発生させるメカニズムは何ですか?
質問する
1657 次
1 に答える
13
x86 CPUで1オペランド除算を行う場合、EDX:EAX(64ビット)は第1オペランド(32ビット)で除算されます。結果はEAX(32ビット)に保存されます。
したがって、EDX:EAXをEDXで除算すると、基本的に(EDX * 0x100000000 + EAX)/ EDXになります。この結果は、常に0x100000000を超え、ターゲットレジスタに収まらないか、除数がゼロになります。どちらの場合も、除算例外が発生します。
このページも参照してください(Intel開発者マニュアルから)。
これはアセンブラ(MASM)に固有のものではなく、この場合はプラットフォームに固有のものであることに注意してください。
于 2012-09-01T22:13:45.177 に答える