Re: perspectives on 32 bit vs 64 bit
Helge Hafting wrote:
Adam Skutt wrote:
Helge Hafting wrote:
You can address more than 4GiB by using the always-unpopular
"segment" registers found on intel processors.
How? In protected-mode, they're in use as segement descriptor
selectors. Certain bits have specific meanings you cannot override,
as they're part of the memory protection mechanism.
Yes, so?
That means it's logically impossible to have a 48-bit pointer, at all
period.
Sigh. All mechanisms that lets the os support more than 4GB for
several processes, can be used to support more than 4GB for a
single process as well. That is trivial, although also less efficient
than only supporting 4GB.
Yes, but it's obvious now you didn't understand what I said.
You /cannot/ have more than 32-bits of virtual address space. Period.
There is no way to do it.
What you can do is remap the same virtual space to different physical
addresses. Which is different from having extra v.a.s.
Whenever the app reloads a segment register,
(i.e. trying to use a 48-bit pointer where the segment
descriptor
differs from the last pointer used)
This isn't a 48-bit pointer, because descriptor selectors aren't pointers.
And it won't work anyway. How do I get a base offset higher than
0xFFFFFFFF? And if I add to it, what behavior is yielded?
Not what is desired, to say the least.
You can't have more than 32-bit v.a.s. Anytricks to get around that
don't really get around that, they just have the same addresses the
user-space code sees point to different physical addresses.
I really don't see how this is possible leafing through the IA-32 System
Programming Guide so links or text would be preferred.
Adam
Reply to: