問題は「プログラムされた」という言葉にあります。マイクロプロセッサ (CPU のことですよね?) は通常、ハードウェアプラットフォームに固有のマシン コードを実行します。マシンコードは、メモリから読み取られ、特別な方法で解釈される単なるバイトです。これは、プロセッサがプログラムされる可能性のある最低レベルです (そして、いつの日かそのようにプログラムされました)。
この方法でプロセッサをプログラミングするのは非常に不便であるため、いわゆる「アセンブリ言語」が発明されました。基本的に、機械語コードの記号表現とその解釈規則のセットを定義するだけです。次に、トランスレータと呼ばれる特別なプログラムが、アセンブリ言語で記述されたプログラムの定義を含む一連のテキスト ファイルを取得し、マシン コードを含み、ターゲット プロセッサによって実行される可能性のあるものを生成します。(この「何か」の定義は難しいので、脱線しないようにしましょう。)
現在、別の上位レベルがあります —特定のハードウェア プラットフォームの詳細を抽象化し、特定のプロセッサを処理するのではなく、アルゴリズムC
とデータ フォーマットに集中できるようにする言語(程度は低いですが) などの言語です。明らかに、これは特定の H/W プラットフォームの知識をコンパイラ(高級言語で書かれたプログラムのテキストを取得し、ターゲット プロセッサで実行可能なものを生成するプログラム) に移します。C++
現在、H/W プラットフォームの特殊性からほぼ完全に抽象化された言語を含む別の上位レベルがあります。スタック オーバーフローを読んでいるときにブラウザで実行される JavaScript が良い例です。その中のプログラムは、ブラウザを実行しているデバイスのプロセッサによって引き続き実行されますが、これらの JS スクリプトとプロセッサの間には多くの複雑なコード層があります。
ここまでで、あなたの質問に対する決定的な答えがないことがわかるはずです。寝室の PC の CPU の低レベル コードに手を出したい場合は、"x86 アセンブラー"、"intel アセンブラー" などでググってください。これは良い出発点です。他のプロセッサをプログラムする場合、使用する検索クエリは同様です。代わりに、 AVRのような特殊なプロセッサをプログラムしたい場合は、通常は特殊なツールが付属しているため、その製品マニュアルから始めてください。