Developing for x86 and x64 os
-
What do you mean?
You need to judge yourself, whether you need x64 extensions or not. x64 means things are bigger (more RAM), but allow some things that are cumbersome on 32 bit.
32 bit app will work on 64 bit OS, the reverse will not.
-
Thanks :-)
[quote author="sierdzio" date="1363166623"]What do you mean? You need to judge yourself, whether you need x64 extensions or not. x64 means things are bigger (more RAM), but allow some things that are cumbersome on 32 bit. 32 bit app will work on 64 bit OS, the reverse will not.[/quote]
-
Hi
For a start, not all 64bit platforms are equal. On most platforms the model is LP64, i.e. longs and pointers are 64bit. On Windows the model is LLP64 (or just P64) - pointers are 64 bits but longs are 32bit. long longs are 64bit on just about all platforms.
Not all 32bit platforms are incapable of running 64bit executables. Older versions of Mac OS X default boot to 32bit but can run 64bit executables (AFAIK 10.8 now only boots to 64bit).
In favour of 64bit: larger address space, more registers available, default floating point is SSE rather than x87.
In favour of 32bit: smaller machine code so better cache hit rate.
A+
Paul -
Thanks pau very interesting informations
[quote author="paulf" date="1363188444"]Hi For a start, not all 64bit platforms are equal. On most platforms the model is LP64, i.e. longs and pointers are 64bit. On Windows the model is LLP64 (or just P64) - pointers are 64 bits but longs are 32bit. long longs are 64bit on just about all platforms. Not all 32bit platforms are incapable of running 64bit executables. Older versions of Mac OS X default boot to 32bit but can run 64bit executables (AFAIK 10.8 now only boots to 64bit). In favour of 64bit: larger address space, more registers available, default floating point is SSE rather than x87. In favour of 32bit: smaller machine code so better cache hit rate. A+ Paul [/quote]
-
A sometimes overlooked problem I had encountered is when an app stores it's data in a binary file. The reader/writer was using things like sizeof(long) to read/write chunks of data which obviously led to horrible horrible bugs when the data was shared between different versions.