This question already has an answer here:

I recently noticed that, in a 64 bit Windows OS most of the 32 bit applications can be installed. But in a 32 bit OS, most of the 64 bit applications cannot be installed. Why is it so ?

marked as duplicate by Ƭᴇcʜιᴇ007, sleske, Heptite, Kevin Panko, Moses Apr 7 '14 at 1:31

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 2
    Because the extra bits fall out of the CPU and clog up the fan. – Daniel R Hicks Apr 4 '14 at 19:47

64-bit applications are compiled to take advantage of 64-bit registers in x86-64 processors, which also requires that the processor is running in the proper mode, and the OS API call word lengths match.

32-bit operating systems usually use protected mode, which only allows the use of 32-bit registers (e.g. EAX, EBX). On x86-64 processors, 64-bit compatibility is added as long mode, which 64-bit OS'es are run under.

Additionally, the 64-bit version of Windows includes the WoW64 compatibility layer that dynamically translates 32-bit API calls to the 64-bit equivalents, and switches the CPU between 32-bit protected and 64-bit long modes when the process is scheduled to be run.

Another interesting point that comes into play with 64-bit processors is hardware virtualization. Given the proper hardware support, one can sometimes run a virtual machine (e.g. using VirtualBox or VMWare) that contains a 64-bit guest OS, while the host OS is only 32-bit (again, given the availability of x86-64 hardware virtualization). For details on doing this with VirtualBox, see this section of the manual.


A 64 bit application requires resources that a 32 bit application cannot supply. It's sort of like putting a square peg into a round hole.

  • What resources exactly is that? The only difference I am aware of between a 32-bit application and a 64-bit application is the size of the registers used and perhaps specific instructions that only work in long mode. – Ramhound Apr 4 '14 at 18:23
  • @Ramhound - The "resources" would be the extra 32 bits. – Daniel R Hicks Apr 4 '14 at 19:57
  • @DanielRHicks - I am not exactly sure I would agree that using a 64-bit register is a resource. You can represent the same 64-bits of information with either 2 32-bit registers or 1 64-bit register. I guess my complaint with this answer is that its sort of vague. – Ramhound Apr 4 '14 at 20:12
  • So what do you think a "resource" is??? A register is a resource. – Daniel R Hicks Apr 4 '14 at 20:29
  • @DanielRHicks - Alright. First I don't think its accurate to say that a 32-bit operating could not be modified to support 64-bit applications in the same way a 64-bit operating system supports 32-bit applications provided the actual CPU in question was a x86-64 product. So I think the entire statement is not only incorrect it also should be a comment. Of course based on your own comment I think you are just trolling me. – Ramhound Apr 4 '14 at 21:57

In addition, a 32 bit application can only allocate upto (max) 4 Gb of ram. Because 64 bit applicatations limitation is a lot higher (upto (max) 512 Gb of ram, there would be a problem if a 64 bit program needs to allocate more memory. The program would crash, and your computer would generate a BSoD stating it can't allocate the memory.

Not the answer you're looking for? Browse other questions tagged or ask your own question.