私のソースには、3つまたは4つのアセンブラルーチン(約20 MBのソース)があります。それらはすべてSSE(2)であり、(かなり大きい-2400x2048以上と考えてください)画像の操作に関連しています。
趣味はコンパイラーですが、アセンブラーが増えています。ランタイムライブラリはそれらでいっぱいであることが非常に多く、それらのほとんどは通常の手続き体制に反するものと関係があります(例外のヘルパーなど)
マイクロコントローラー用のアセンブラーがありません。最新のマイクロコントローラーのほとんどは、非常に多くの周辺ハードウェア(割り込み制御カウンター、さらには直交エンコーダー全体やシリアルビルディングブロック)を備えているため、アセンブラーを使用してループを最適化する必要がなくなることがよくあります。現在のフラッシュ価格では、同じことがコードメモリにも当てはまります。また、多くの場合、ピン互換デバイスの範囲があるため、CPU電力またはフラッシュスペースが体系的に不足している場合のアップスケーリングは、多くの場合問題になりません。
実際に100000個のデバイスを出荷し、プログラミングアセンブラを使用しない限り、フラッシュチップをカテゴリを小さくするだけで、大幅な節約が可能になります。しかし、私はそのカテゴリーに属していません。
多くの人が組み込みはアセンブラーの言い訳だと思っていますが、彼らのコントローラーはUnixが開発されたマシンよりも多くのCPUパワーを持っています。(Microchipには40および60 MIPSマイクロコントローラーが10米ドル未満で付属しています)。
ただし、マイクロチップアーキテクチャの変更は容易ではないため、多くの人がレガシーに固執しています。また、HLLコードはアーキテクチャに大きく依存します(ハードウェア周辺機器、レジスタを使用してI / Oを制御するためなど)。そのため、アセンブラーでプロジェクトを維持し続ける正当な理由がある場合があります(新しいアーキテクチャーで最初から業務をセットアップできたのは幸運でした)。しかし、多くの場合、人々は自分たちが本当にアセンブラーを必要としていると自分自身をからかいます。
GOTOを使用できるかどうかを尋ねたときに教授が答えた回答は今でも気に入っています(ただし、アセンブラーとしても読むことができます)。「この機能が必要な理由について3ページのエッセイを書く価値があると思われる場合は、それを使用できます。 。結果とともにエッセイを提出してください。」
私はそれを低レベルの機能の指針として使用しました。窮屈すぎて使用しないでください。ただし、適切に動機付けてください。正当化としての複雑な推論を避けるために、(エッセイのように)人工的な障壁を1つか2つ投げることさえできます。