I know the fact that you cannot run the same machine code on two different machines,
so the software must be machine dependent (i.e Arm program cannot run on either powerpc or x86).
but in reality the software is OS dependent (i.e linux programs cannot run on windows or mac).
how does this happen? my best guess for now is that every OS behaves like a virtual machine and the source is compiled for windows-machine,may be?? and this machine has its own assembly code?