title: Why are signed and unsigned multiplication different instructions on x86(-64)?
body: <p>I thought the whole point of 2's complement was that operations could be implemented the same way for signed and unsigned numbers. <a href="http://en.wikipedia.org/wiki/2%27s_complement">Wikipedia even specifically lists multiply as one of the operations that benefits</a>. So why does x86 have separate instructions for each, <code>mul</code> and <code>imul</code>? Is this still true for x86-64?</p>