Linked by Nicholas Blachford on Sun 10th Feb 2002 17:37 UTC
Editorial "This will end up being one of the world's worst investments, I'm afraid," - David House, former Intel chief of corporate strategy said in the early 1990s. I've been fasinated by microprocessors for years and have been following the Merced debacle since back in 1994 when HP and Intel announced they were getting together to make some amazing new technology.
Permalink for comment
To read all comments associated with this story, please click here.
IA32_ON_WIN64.
by Anonymous on Tue 12th Feb 2002 10:45 UTC

Maybe it's used by the Windows on Windows system. This would need to have a IA32 entry but bind to the WIN64 api.

This is nasty actually, you'd need to translate stack frames, which would be non trivial if you pass pointers to structure that contains pointers e.g.

// Easy, no translation required
typedef
{
DWORD dwVal;
} APISTRUCT3, *LPAPISTRUCT3;

// Need to translate lpData
typedef
{
DWORD dwVal;
LPVOID lpData;
} APISTRUCT2, *LPAPISTRUCT2;

// Need to build a 64 bit version of Struct
typedef
{
LPAPISTRUCT2 Struct;
} APISTRUCT1, *LPAPISTRUCT1;

APISTRUCT1 ApiStruct1;
APISTRUCT2 ApiStruct2;

No, if you pass APISTRUCT3 to a Windows API call, no translation is required, you just zero extend the pointer on the stack.

If you pass APISTRUCT1 it's a real pain - you'd need to copy (& translate the lpData pointer) the APISTRUCT2 structure it points to to a temporary buffer, and change the pointer to point there, and then do the reverse after the API call returns.

Plus you'd need to be able to switch to 64 bit mode and back, which may take time.