number 1 not everything needs to be in 64bit,
Wrong. x86-64 offers several improvements over x86. More registers and faster memory model are just a few. NTx64 kernel offers several security features for 64-bit programs running in native space. NTx64 must run 32-bit programs in an emulated environment space to preserve compatibility. This requires a mode change from Long Mode to Compatibility Mode every time a 32-bit thread is scheduled to run and a mode change back when the thread has finished it's time slice.
And number 2 it takes to long to make a 32bit program into 64bit and the end results are barley worth it half the time,
Very wrong, horribly incredibly wrong. So wrong I now
KNOW you have no clue about ISA's, specifically the x86 one.
Your just recompile the add with a different compiler target. 90% of applications will cross compile just fine. It only gets dodgy if the programmer was lazy and improperly used the data type long. That AMD document I linked was from AMD demonstrating exactly what to look for when recompiling, namely the poor usage of the long d-type. It also lists ways that a programmer can get more performance by tweaking certain data sets and loops for newer x64 instructions. One of my hobbies is getting x86 programs running on my SunBlade 2000 at the house. It's got 2 UltraSparcIII CPU's @1Ghz inside it. I'm constantly compiling code of common Linux programs. I've even got DosBox 0.74 working, yes an x86 DOS emulator working on a Sparc CPU, even got Windows 3 to start. I've compiled Firefox, OpenOffice, SDL, and a ridiculous amount of common software for Sparc. NONE of that was written for Sparc, which is a 64-bit uArch, yet it magically compiled.
And this is the major reason why-companies are cheap and some programmers are lazy.
Programmers are incredibly lazy, too many use's of "undocumented features" and cutting corners thinking it won't hurt anything in the future. Good thing is that gcc is fairly smart and fix's most of the laziness when you do a compile.
Not to mention 32bit can support 4GB of ram and usually only 3.25GB on windows
Wrong. 32-bit on x86 is 2GB of memory not 4GB. You need to recompile with LAA support to use 4GB and you lose the ability to access kernel memory when you do that. On a 64-bit OS LAA will auto-magically work, the OS needs no special notification. On a 32-bit OS you can only get 3GB and are required to boot the OS with the /3G boot option. *WARNING* doing this will limit your OS's kernel memory to whatever is between 3 and the cap on your system. If your at 3.25 of usable memory then your kernel must work inside a 256MB window, this is
very dangerous and will often result in an unstable OS. If your limit is 3.5GB then your kernel will run in 512MB of address space, this isn't good but chances are you won't be crashing constantly. LAA is dangerous on 32-bit Windows and that's the reason it's ill advised from MS to use it.