私はアセンブリの学習で忙しく、分割を検討していましたが、次のステートメントでピクルスに遭遇しました。
mov edx,0x00000001
mov eax,0x00000000
mov ecx,0x00000002
idiv ecx
GDB:
0x08048071 <+17>: mov edx,0x1
0x08048076 <+22>: mov eax,0x0
0x0804807b <+27>: mov ecx,0x2
=> 0x08048080 <+32>: idiv ecx
0x100000000を0x00000002で除算したかったので、除算のスパンはEDX:EAXであるため、0x1をEDXに、0x0をEAXに移動しました。次に、0x2をECXに移動して除算します。これにより、残念ながら浮動小数点の例外が発生します。何が間違っていたかはわかりません。
div(unsigned)を使用すると正常に動作するため、例外の原因となるこの特定のステートメントのdivとidivの解釈の違いは何でしょうか。