マイクロプロセッサプログラミングでアセンブラからCに移行しました。これはいい考えだと思う
恐れるな、100%アセンブラーで新しいプログラムを開発する人はもういません。最近では、Cは、最も小さくてくだらない8ビットアーキテクチャでも使用できます。ただし、アセンブラーを知っていると、非常に優れたCプログラマーになります。また、アセンブラーで作成する必要があるプログラムには、常に1つまたは2つの小さな詳細があります。
C構文は、アセンブラー構文よりもはるかに簡単に学ぶことができます。
はい、確かに構文は簡単です。ただし、迷惑な詳細をすべて使用してC言語全体を学習することは、特定のアセンブラーのすべての詳細を学習するよりもはるかに複雑です。Cははるかに大きくて広い言語です。しかし、もう一度、すべての詳細を学ぶ必要はないかもしれません。
Cはより複雑なプログラムを作成するのに使いやすいです。
実際、Cは、カプセル化やローカルスコープ/ローカル変数など、モジュールプログラム設計のメカニズムを提供します。また、Cには標準ライブラリと、過去30年間に書かれた膨大な量のリソースがあります。そして最も重要なことは、Cは移植性があるということです。
Cを学習することは、アセンブラーを学習することよりも生産性が高いため、アセンブラーよりもCの周辺に開発物が多くあります。
Cには、事前に作成された機能、ライブラリ、およびリソースがたくさんあるため、車輪の再発明が少なくなります。しかし、それとは別に、あなたの声明は主観的です。個人的な好みの問題だと思います。
たとえば、私は経験豊富なCプログラマであり、C ++をときどきプログラミングしています。私はC ++での生産性がはるかに低いと感じています。なぜなら、その言語もCも知っていないからです。しかし、そのように感じるからといって、必ずしもCでのプログラミングがC ++でのプログラミングより生産的であることを意味するわけではありません。経験豊富なC ++プログラマーは、間違いなく反対の意見を持つでしょう。
そして、「生産的」には多くの側面があります。非常に重要な側面は、メンテナンス時間、特にメンテナンスによって引き起こされるバグの修正にかかる時間です。Cは、アセンブラよりも保守がはるかに簡単です。
アセンブラはCよりも低レベルのプログラミング言語であるため、ハードウェアへの直接プログラミングに適しています。
ハードウェアプログラミングは、どちらの言語でも直接実行できます。Cでできないことは、CPUコア自体のスタックポインターや条件レジスタなどにアクセスすることだけです。したがって、ハードウェアプログラミングで自分のCPUと話すことを意味する場合、はい、アセンブラーはCより少し多く許可します。外部ハードウェアにアクセスすることを意味する場合、アセンブラーはCよりも利点がありません。特定の外部デバイス用の汎用アセンブラコード、汎用Cコード。
メモリ、割り込み、マイクロレジスタなどを操作することを示唆しているはるかに柔軟です。
これは正しくありません。Cでは、これらすべてを行うこともできますが、interruptキーワードなどのコンパイラ固有のCコードに依存する必要がある場合があります。
最後に、Cを重視してMCUをプログラミングするには両方の言語を知っている必要があります。