why don't some 32 bit programs work with 64 bit os?

I know some don't work, and I am not looking for a way to get them to work, I just want to know why this happens from a purely academic standpoint.

Actually a few friends were asking me this the other day and I could not come up with an answer.
jackjohnson44Asked:
Who is Participating?
 
käµfm³d 👽Commented:
Here is a restatement of what has already been said. It is describing XP 64, but is still related.

    http://www.microsoft.com/windowsxp/using/64bit/russel_exploringx64.mspx#EYE

 (under "Key Differences" section)
0
 
crumleyCommented:
all 32-bit programs SHOULD work with 64-bit...can you give an example of a program that doesn't??

32-bit programs can run on 64-bit, because the architecture is compatible. 16-bit programs however, can't work on 64-bit.

as I said earlier, can you give an example of a 32-bit program that doesn't work on a 64-bit computer??
0
 
gatekeeper6838Commented:
The only time a 32-bit program doesn't work (or won't work without some serious manipulation) is if it is dependent on 16-bit components to run. In most cases it is simply that some older 32-bit programs actually used a 16-bit installer program. Case in point: one of my old games has a 16-bit installer so I can't install the program *even* though the game itself is 32-bit and would work just fine in practice..

Technically you could still get such a program to work if you can extract the 32-bit files and manually create any missing registry keys and or folders that get generated during the installation process. Unfortunately the company probably assumed that 16-bit backwards comparability would never go away. They assumed wrong. But as long as the installer is 32-bit and the program doesn't run any 16-bit modules, you should be good.
0
Cloud Class® Course: SQL Server Core 2016

This course will introduce you to SQL Server Core 2016, as well as teach you about SSMS, data tools, installation, server configuration, using Management Studio, and writing and executing queries.

 
Fernando SotoRetiredCommented:
Hi jackjohnson44;

Here is an article on the subject that answers you question.

64-bit Applications  
http://msdn.microsoft.com/en-us/library/ms241064%28VS.80%29.aspx

Fernando
0
 
senadCommented:
Programs that work in x64 environment are specifically written for that environment.
Their compilers are capable to compile x64 native code and produce a x64 bit program.
Windows such programs file under C:\ Program Files

x32 bit programs are compiled with x32 compilers and thus can not use x64 registers.
So they end up under C:\ Program Files (x86)

So all x32 programs (unless they have some specific compatibility handicap) work also under
x64 systems.
0
 
McKnifeCommented:
To add to gatekeeper:
There is at least one more possible reason. For example, some programs rely on virtual devices (32 Bit) which, when installed on x64, would need drivers (64 Bit) although virtual!
0
 
senadCommented:
Put it this way (for dummies) :
You have 64 holes and 64 marbles.
When you release the marbles they dissapear instantly.
But If you have 32 holes the situation is different .... marbles get stuck.
Try explaining it this way :-)
0
 
senadCommented:
...
if you have 32 marbles and 64 holes
marbles will also dissapear fast.
.... ;-)

0
 
käµfm³d 👽Commented:
@senad

I don't think you're argument makes sense. Using your marble analogy, the situation would be, I have 64 holes and 32 marbles. Then the question would be:  "Why can't I make my 32 marbles disappear with these 64 holes?"

:)
0
 
käµfm³d 👽Commented:
N/M....   I posted a little late :)
0
 
gatekeeper6838Commented:
Good point, McKnife. Thankfully, though, many modern 32-bit programs provide 64-bit virtual drivers for the sake of compatibility with 64-bit Windows. One example is iTunes... the program offered for 64-bit Windows is still 32-bit, but all virtual drivers (as well as the hardware iPod drivers) are 64-bit. Also, programs like Slysoft's AnyDVD, or VirtualCloneDrive that use virtual drivers are still 32-bit but provide the 64-bit drivers for the same reason.

Ultimately, *most* modern 32-bit programs will work or have been updated to work with 64-bit Windows.
0
 
senadCommented:
Who said they do not dissapear ? That is why your x32 applications work on x63 systems !
:-)
0
 
käµfm³d 👽Commented:
I'm simply restating the author's question by means of you analogy :)
0
 
senadCommented:
I think it basically explains why x64 will not on x32 and why x32 will work on x64.
 :-)
But I can explain engineer style if you like... ?
0
 
jackjohnson44Author Commented:
The program in question came with a book.  It is old and definitely not somethign anyone has heard of.

I definitely understand the 32 not being able to run on 64, but I still don't understand why it won't work in reverse.  The marble analogy seems to go the other way.

Gatekeeper, you mentioned a 16 bit installer.  So a 32 bit program will work with a 16 bit installer (since the program does work on a 32 bit machine) why won't it work on 64?

I also don't really see anyone saying why this happens.  "because it is not compatible" or "if it was compiled differently" doesn't really help me.
0
 
käµfm³d 👽Commented:
I understand what you mean by your analogy (I'm studying CS). Your description lends itself to say that all 32-bit apps will run on 64-bit architecture and the question is "why don't some 32 bit programs work with 64 bit os?" I understand where the author is coming from as I have had some trouble getting my 32-bt Cisco client to install under Win 7 x64.

I'm not saying that your analogy/description is wrong, but it doesn't quite answer the original question.
0
 
McKnifeCommented:
> I also don't really see anyone saying why this happens
OK. If you need help on my explanation, then please feel free to ask. But you should clarify how "academic" you want academic.
Do you know the concept of windows on windows 64 (wow64)? http://en.wikipedia.org/wiki/WoW64
0
 
jackjohnson44Author Commented:
McKnife, I need help on your explanation.

"For example, some programs rely on virtual devices (32 Bit) which, when installed on x64, would need drivers (64 Bit) although virtual!"

When I read this, I interpret it as some programs that use 32 bit (virtual devices, dlls, drivers, whatever) need 64 bit drivers.  That doesn't really answer my question of why does this happen.

The marble example (although going the wrong way) did try to explan the problem.

I want a statement like:
64 bit programs don't work on a 32 bit os because a 64 bit program has extra size to represent memory.

so:
a 32 bit program might not work on a 64 bit os because ________________
0
 
gatekeeper6838Commented:
jackjohnson, here is the answer to why 32-bit will work on 64-bit, but 16-bit will not. Intel originally designed it's older, 32-bit processors to have both a 16-bit and 32-bit mode. When you run a 16-bit OS, the processor would run in 16-bit mode. When you run a 32-bit OS, It can switch between 16-bit and 32-bit modes on the fly for backwards compatibility purposes.

When AMD created the x86_64 architecture which extends Intel's architecture to 64-bit, it similarly came with the ability to switch between 16-bit and 32-bit modes. However, it also came with the ability to switch between 32-bit and 64-bit modes. However, due to design constrains, it can't switch between all three modes, 16-bit, 32-bit and 64-bit.

So, here's how it works. If you run 32-bit Windows on a 64-bit processor, the processor can switch between 16-bit and 32-bit modes on the fly BUT NOT to *64-bit*. If you run 64-bit Windows, the processor can switch between 32-bit and 64-bit modes on the fly, BUT NOT to *16-bit*. This is a design limitation of the x86_64 architecture, unfortunately.
0
 
käµfm³d 👽Commented:
>>  I definitely understand the 32 not being able to run on 64, but I still don't understand why it won't work in reverse.  The marble analogy seems to go the other way.

I believe you stated this backwards.


I believe a combination of gatekeeper6838's and McKnife's answers would be the correct solution, although (no disrespect gatekeeper6838), McKnife's answer(s) seem more applicable to current hardware/software.
0
 
käµfm³d 👽Commented:
@gatekeeper6838

Disregard my previous post since we posted at the same time and I like your assessment :)
0
 
McKnifeCommented:
> a 32 bit program might not work on a 64 bit os because ________________
No single sentence can sum it up, sorry.
->the virtual-device-thing: take a virus scanner. Some 32-Bit-compatible products will not run on x64 because their scanning engine makes use of filter drivers. The setup unfortunately does not offer 64-bit-filter-drivers, that's why the whole program is incompatible to x64.
->16-bit: some setups of 32-bit-software use 16-bit-installers and that's why you can't even install it (although the software itself would be 64-bit-compatible)
0
 
gatekeeper6838Commented:
jackjohnson, one last thing to expand on my last post and hopefully fill in the rest of the holes for you about the device driver thing. McKnife mentioned Windows on Windows (WOW) technology. To some it up in one sentence, this technology is what allows the processor to switch between 32-bit and 64-bit modes. WOW runs at the application level.

But drivers run at the *kernel* level. The Windows Kernel is the very core of the operating system. This part HAS to be pure 64-bit to function, and thus all drivers must be pure 64-bit since they run inside of the kernel. This is why a 32-bit driver *cannot* run on a 64-bit operating system. Some 32-bit programs can't function without a driver being installed because it is the only way for that program to have direct access to kernel and / or hardware resources on your computer.

So, the only way for such a 32-bit program to access these resources is to have a 64-bit driver to install into the kernel. Older 32-bit programs were not designed with this limitation in mind. But modern 32-bit programs are.

Here's the good news
A) Most 32-bit programs don't use 16-bit installers. Only some really old ones do
B) Most 32-bit programs don't require drivers
and
C) Most modern 32-bit programs include 64-bit drivers to get around this limitation.

Hope this helps.
0
 
käµfm³d 👽Commented:
I don't know if EE let's you reselect the proper answer once chosen, but if you can, I can't rightfully accept credit as the solution. The link I posted was more for reinforcement of the already stated ideas. In my opinion, and I'm sure the opinion of the other participants, I did not add anything new to the discussion.

I would ask that you reassess the point distribution, if possible :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.