高水準言語のいくつかの低水準機能について知りたいのですが。頭のてっぺんから、次のことを指摘できます。-ビット演算-ビットフィールド-ポインタ演算-インラインアセンブリ-割り込み関数
私のリストにないものをいくつか指摘していただければ幸いです。CまたはPascalにそれらがあればいいのですが、基本的にはどの高水準言語でもかまいません。ありがとうございました。
高水準言語のいくつかの低水準機能について知りたいのですが。頭のてっぺんから、次のことを指摘できます。-ビット演算-ビットフィールド-ポインタ演算-インラインアセンブリ-割り込み関数
私のリストにないものをいくつか指摘していただければ幸いです。CまたはPascalにそれらがあればいいのですが、基本的にはどの高水準言語でもかまいません。ありがとうございました。
Cはインラインアセンブラも割り込みもサポートしていません。それらを実装するすべてのCコードは、非標準のコンパイラ拡張機能を使用しています。ただし、C ++は、標準を通じてインラインアセンブラをサポートしています。
Cのその他の重要なハードウェア関連機能は次のとおりです。
関数ポインタはC/C ++に固有のものであり、特定のメモリアドレスにあるコードを実行できるようにし、他のハードウェア関連のタスクを実行できるようにします。関数ポインターの使用の詳細については、以下を参照してください。組み込みシステムの関数ポインター。
整数型。CとPascalはどちらも、異なるサイズ(バイト、ワード、ダブルワードなど)のint型をサポートしていますが、それらのサイズは標準で指定されていません。同じ理由で、演算子のsizeも重要になる場合があります。
Cは、メモリアライメントもある程度サポートしています。たとえば、パディングバイトの動作に関するルールを明示的に示しています。
volatileキーワードは、コンパイラの最適化を気にせずに変数をリアルタイムで更新できるため、ハードウェア関連のプログラミングにとっても重要な機能です。
constキーワードは、ハードウェア関連のプログラミングで使用され、データの最終的な場所(NVMまたはRAM)を決定します。
Cに欠けている他の重要な機能は、言語の一部としてのマルチスレッドのサポートとメモリバリアのサポートです。一部のCコンパイラは、volatileキーワードを使用してメモリバリアを実装しますが、標準で機能するという保証はありません。
ウィキペディアの引用:
高水準プログラミング言語は、コンピューターの詳細から強力に抽象化されたプログラミング言語です。
Cは、コンピューターの細部に非常に近いため、そのような言語ではありません。
そしてあなたのリストを見てください:
これらはすべて、コンピューター/ OSアーキテクチャ自体と密接に関連しており、高レベルではないと見なされます。
低水準プログラミングを非常によくサポートする高水準言語の1つがAdaです。
前述のCに加えて、Adaは並行システムを本質的にサポートしています。タスクは言語構成であり、個別のライブラリは必要ありません。並行システムの場合、Adaはいわゆる保護型も提供します。これにより、相互排除やシグナリングを追加で考慮することなく、タスク間で共有変数またはデータを使用できます。基本言語ライブラリは、割り込み処理のサポートも提供します。
データアクセスの場合、データの正確な表現は、表現句を使用して定義できます。強い型付けの結果として、データの異なる表現間のビュー変換を定義することも簡単です。たとえば、スペースと速度の間のトレードオフが可能になります。
マシンコードを挿入することにより、必要に応じてアセンブリを直接生成することもできます。