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