Why is 1/2/3 operand provided for imul , and only 1 for mul ?
1 answer
Historically. Initially, in 8086 processors, both mul and imul were only in single-operand form, due to restrictions on the length of opcodes. Later, in 286, it became possible to shove more. The choice made in favor of imul. Most likely, because it is for sign multiplication that it may be more interesting to get a shorter result, as with 2 and 3 operands. Whereas for unsigned, more long works are most often interesting, in ax: dx or eax: edx (I remind you that the single-operand form imul is the only way to get such a “big” quotient).
I hope not confused :)
|