alamanos opened this issue on Jan 29, 2007 · 127 posts
Talain posted Fri, 09 February 2007 at 4:12 PM
Quote - More I read, more bigger are my doubts if XP64 or Vista64 runs under 64 bit mode.
As much as I wouldn't put it past Microsoft to try something stupid like that, what you are talking about is not possible.
Quote - FACT #1
All the Wndows DLL function calls are performed by means of the instruction **CALL SEGMENT:ADDRESS
**
I am pretty sure that that is NOT the case, as far procedure calls are privileged instructions and cannot be executed in user mode.
Functions in a DLL are loaded into the process's address space at runtime, and are accessible just like any other. call address works the same way whether or not what is located at address was loaded into memory when the program was loaded by the operating system, or later on as the result of loading a DLL.
The reason that a 64 bit program cannot link to a 32 bit DLL (and vice versa) is that you can't combine 32 and 64 bit code within the same process (as the processor can only be running in one mode at a time, and that mode can only be switched from ring 0.
Certain DLL's would have to exist in both 32 and 64 versions, but they can easily be compiled both from the same source code, changing only compiler options.
Pretty much the extent of 16 bit code still seen today is in installer stubs that inspect the operating system environment; and where it detects the operating system is only 16 bit (i.e., DOS or Windows 3.1, informs the user that the application requires a 32 bit version of windows, and exits). Including 16 bit support as well would just make the operating system even larger, and for no appreciable benefit. (People may cry "forced upgrade", but anyone who is still actually using 16 bit apps for anything probably isn't going to be upgrading to Vista, and probably isn't even using XP either).