Click here to Skip to main content
15,887,267 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
So I've been hearing about how everyone has (or is) moving over to 64 bit computing these days. I'm curious as to whether all 32 bit applications are properly supported on a 64 bit platform. I did hear that backward compatibility towards 32 bit apps on a 64 bit OS isn't that good so I would like to hear your opinions on this.

Thanks!
Posted
Updated 18-Apr-11 20:22pm
v3

Currently all amd64 architecture based processors support 3 modes. 32bit (legacy mode), 64bit and also compatibility mode. The last mode means running 64bit but with compatibility support for 32 and 16bit (except 16bit real mode). Since there are a lot of 32bit applications, most use legacy or compatibility mode. But what does this mean for you?

Well, actually it doesn't mean much to you except when you dive deeper into the system. When you are a programmer working on a device driver this may affect you. However, then you should already use 64bit pointers since windows 95 if you would do it right. Most of the time you don't have to worry and let the compiler and OS handle it. If you use the right types, meaning you use the correct pointer type and not int32 for pointers, then the compiler will substitute that with the correct size of whatever the native pointer might be for your target. So it all comes down to correct code, so you won't have any (or at least not very much) problems at all.

Good luck!

>> About 32bit applications on 64bit systems: Don't worry to much about that because it will eventually be the same with 16bit applications now. It is actually very sad that about 25% of your processor is used for legacy instructions and modes that will never be used. So when everyone is going totally native 64bit, the processor will then have so much power that it has no trouble at all emulating whatever mode and instruction needed. It would actually be very nice to loose those conversion instructions from the time that converting characters to numbers and vice versa where very expensive but still hog a lot of small and fast single byte instructions in ia32 systems today.
 
Share this answer
 
v2
Comments
Nithin Sundar 19-Apr-11 6:16am    
Thanks for a very informative solution! I was apprehensive before but this has just pushed my view of 64 bit into a more positive side now.
E.F. Nijboer 19-Apr-11 6:49am    
Your welcome and very nice that I could make 64bit somewhat more positive. Actually the IA64/Itanium that Intel introduced has explicit instruction-level parallelism and would perform even better. The only problem with that is that it doesn't have some sort of legacy support built in and because of the instruction-level parallelism much harder to code. They hoped it would be the successor of the ia32 architecture but AMD won that with their architecture because Microsoft started to support it. And since m$ is still god in desktop land, Intel started implementing it as well. The wiki is actually pretty good on this, so for more you could have a look there.
http://en.wikipedia.org/wiki/X86-64#History_of_AMD64
Just about every application I've ran that's 32bit runs fine on 64bit. You usually only run into problems with device drivers. So if you have an old printer lying around you may have some problems getting the drivers to work at all, but with the cost of printers nowadays, that's not a big concern to most people. Just about anything new that's coming out really has no issue, as developers/engineers, we have to make sure we're compatible with the most common systems out there, and right now, 64bit is VERY popular in newer systems (cause of all the RAM it can support).
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900