On Mon, Feb 08, 2010 at 11:27:07AM +0100, Joerg-Cyril.Hoehle@t-systems.com wrote:
The wine64 challenge seems to let 32bit MS-windows apps work even though the UNIX side has to manage pointer addresses >2^32, i.e. above the lower 4GB address range. Is there some address translation involved or only mmap'ing? What must the Wine developer know to write correct code for wine64?
A 32bit (i386) windows application binary can only run in a 32bit Unix application [1]. In which case the Unix kernel will handle the system call emulation and ensure that the only user-space virtual addresses the application sees are 32bit (it may be able to give the app almost 4G of user address space - instead of the usual 3G).
Wine may allow both 32bit and 64bit clients to talk to its server process - and that may need care so that only fixed-size types are used.
David
[1] The instruction sets are different - the single byte opcodes for inc/dec register are reallocated for other uses. So you cannot just load 32bit code into a 64bit binary and expect anything sane to happen.