X86 IDIV sign of remainder depends on sign of dividend for 8/-3 and -8/3?

前端 未结 1 627
深忆病人
深忆病人 2020-12-21 01:28

Can anyone explain for me why the sign of the remainder is different in these cases? Is this an emulator bug or do real CPUs do this, too?

8 / -3 :          


        
相关标签:
1条回答
  • 2020-12-21 01:55

    It is supposed to work that way, though it is tricky to find out by reading the documentation:

    Non-integral results are truncated (chopped) towards 0.

    Combined with the "division law" X = dq + r (the dividend is the divisor times the quotient plus the remainder), we find that therefore the remainder r = X - d truncate(X / d)

    This shows that the remainder depends on the sign of the dividend, but not on the sign of the divisor.

    0 讨论(0)
提交回复
热议问题