そのとおりです!CPUが異なれば、機械語のコードは異なります。
OSそのものも含め、そのCPU向けの実行ファイル(バイナリ)は全て、CPUごとに全く異なる内容になります。
とはいえだからといって、プログラマがそれぞれのCPUごとに専用のソースコードを毎回書いているわけではありません(一部必要な場合もありますが)。 CPUが違っても、同じC++やPythonなどのプログラム言語は全く同じように動作します(完全ではありませんが)。OSもそうです。
実は、プログラマーが書くプログラミング言語(C++やPythonなど)は、「コンパイラ」や「実行環境」と呼ばれるプログラムを通し、CPUが解釈できる「機械語」に変換されて実行されています。
コンパイラや実行環境は、プログラマーとCPUの「通訳者」のようなものですね。この通訳者が存在しているおかげで、プログラマーはCPUの違いをあまり意識せずにプログラムを書くことができるのです。見方を変えればプログラミング言語そのものも、ある種の「開発用フレームワーク」とみなせるかもしれません。