컴퓨터에 대해서 조금씩 공부하고 있는데요 궁금한 점이 생겼습니다.

 

cpu 마다 아키텍처가 다르고 명령어가 다르기 때문에  

 

서로 다른 cpu 끼리는 프로그램이 호환이 되지 않는다고 하더군요...

 

여기까지는 이해할 수 있습니다. 

 

 

그런데  

 

동일한 CPU 에서  한쪽은  윈도우, 한쪽은 리눅스(맥,안드,....)설치를 하면  

 

왜 서로 프로그램이 서로 호환이 안되는 걸까요?  

 

분명히 동일한 아키텍처와 동일한 명령어 갯수를 가지고 있을텐데 말이죠...

 

이 부분이 너무 궁금합니다.



(프로그래밍 언어를 서로 달리했다 하더라도... 컴파일러가 똑같이 기계어를 만들어주지 않나요?)