Mánudaginn 17 maí 2006 14:45 skrifaði Jerry Feldman:
One thing that comes into play here when talking about memory models is virtual memory. A 32-bit program can only directly address 4GB of data (segmented into stack, text, initialized data, heap, and mmapped segments) where a 64-bit program can address 16 exabytes. (Certainly there are physical limitations of the chips - PAE-52 for instance), and the 2.6 kernel permits addresses up to 64GB.
The issue at hand, basically speaking is that you've got a 64bit program calling a 32bit library. This is basically the issue. x = (address *)stub(address*); As suggested by Brian, the Linux people have said the above "address" is always 64bits on a true 64 bit system. Therefore when looking for "stub" as a library. (address32 *)stub(address32 *) Will never apply. Passing an address, the translation address -> address32 is not that difficult, when you can segment within 64bit blocks. Of course the size of available memory to the process is limited to 32bits, which again isn't a problem, because if the above has a 64bit address location, the 32bit address is merely a subset and therefore clearly within it. The same applies with the translation from address32 -> address. It's not a problem. The only problem, is when you want a 32bit program to access 64bit memory models. This is never the issue, was never the issue ... never will be the issue. The above only requires work, definitions, making changes to linkers and program loaders, and translations of addresses. Of course, not everything can be translated. Example: stub(address,int64) Can't be translated. Nor is it the point, because you're not going to be trying to "link" such accesses to their 32bit counterpart. There is nothing impossible about it ... it's merely a question of a core member of people, sticking to old, dynosaur technologies. We need a revolution in the computer industry. We all thought Linux was it, and I thought Corporations like Novel would be a good influence ... obviously I was wrong in that issue, and the others that were crying wolf all the time, were right.