alamanos opened this issue on Jan 29, 2007 ยท 127 posts
kawecki posted Thu, 01 February 2007 at 3:12 PM
More I read, more bigger are my doubts if XP64 or Vista64 runs under 64 bit mode.
FACT #1
All the Wndows DLL function calls are performed by means of the instruction CALL SEGMENT:ADDRESS
FACT #2
The instruction CALL SEGMENT:ADDRESS is invalid in 64 bit mode.
CONSEQUENCE #1
Windows 32 bit applications cannot run under 64 bit mode.
Ok, there's no problem, CPU64 has a 32 bit compatible mode to run 32 bits apps.
Until now is fine, it's only a question to switch on a task basis between 32 and 64 bits modes.
CONSEQUENCE #2
The Windows DLL functions calls for a 64 bits application cannot be done in the same way as function calls from a 32 bits application.
Now it gets complicated, you must have 32bit DLLs and the same DLL in 64 bit version.
Not only you must have all the DLLs duplicated, you must have all the VXD and SYS (rootkit) duplicated!!!!
SOLUTION #1
Don't allow to XP64 or Vista64 run 32 bit applications, only you can use for 64 bits apps.
Also MIcrosoft has to create from zero all the needed DLLs and components, no way to patch an old 32 bit DLL for the job.
SOLUTION #2
Duplicate all the Windows, now you must have two Windows, one 32 bit and one 64 bit running at the same time with the consequent inneficiency and slowness.
The same problem as #1, all 64 bits DLLs must be created.
SOLUTION #3
No 32 bit DLLs only 64 bit as solution #1 with the same problems.
The DLLs will run under 64 bit mode, any function call from a 32 bit applications will be traped by call gates or invalid opcodes faults and then the request translated to the correct 64 bit form that can be handed by the 64 bit DLL.
The result will be a very slow 32 bit application.
SOLUTION #4
Don't do anything or almost anything, let the 32 bit DLL continue to exist, create some new function calls that allow 64 bit pointers to retrieve memory bigger than 4 GB, run all in 32 bit compatible mode with extended memory range and tell the users that is Windows 64.
If they did the same with Windows 3.1 with 32 bit mode, the story continued in a less degree with Win95 and Win98. Only Windows 2000 become really a 32 bit Windows, so why cannot do the same with XP64 or Vista64???
Stupidity also evolves!