X86 IDIV знак остатка зависит от знака дивиденда для 8 / -3 и -8/3? - PullRequest
0 голосов
/ 29 декабря 2018

Может кто-нибудь объяснить мне, почему знак остатка отличается в этих случаях?Это ошибка эмулятора или реальные процессоры тоже это делают?

enter image description here

8 / -3 : quotient(AL) = -2 remainder(AH) =  2
-8 / 3 : quotient(AL) = -2 remainder(AH) = -2

1 Ответ

0 голосов
/ 29 декабря 2018

Предполагается, что он будет работать таким образом, хотя это сложно узнать, прочитав документацию:

Неинтегральные результаты усекаются (обрезаются) до 0.

В сочетании с «законом деления» X = dq + r (дивидендом является делитель, умноженный на частное и остаток), мы находим, что, следовательно, остаток r = X - d усекается (X / d)

Это показывает, что остаток зависит от знака дивиденда, но не от знака делителя.

...