Thu, 29 September 2016, 04:09

You asked in class.  I asked after class and got part of the answer:

First, as we said in class, we want bit [63] to reflect the first half or the
second half of memory since a lot of operating systems use those two halves
of the address space for user space and system space, and having the high bit
differentiate provides a simple test for which space the address is in.

BUT why bits [62:48]?  The answer is simple and I am embarrassed that I did
not think of it.  Answer: if the ISA did not specify it, software developers
would use those bits for storing lots of things over the next few years.  Then,
when Intel wanted to use those bits for something (i.e., reserved for future
use), the code in which developers took advantage of those bits would no longer
work.  Ergo, to discourage software developers from using those reserved bits
for all kinds of clever things, the ISA specified them.  This does not answer
the question of why sign-extend vs. 0, but it does answer the question as to
why specify them.

As to why sign-extend rather than zero-extend, I don't have an answer to that
one yet.

Good luck on the problem set due in a few days.

Yale Patt