[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: