Categories: 未分類

C–

C–

 “C–”  
C– ( C マイナス マイナスと発音) は、Cに似たプログラミング言語です。その作成者である関数型プログラミングの研究者であるSimon Peyton Jonesと Norman Ramsey は、人間のプログラマーによって書かれるのではなく、主に非常に高水準の言語のコンパイラーによって生成されるように設計しました。他の多くの中間言語とは異なり、その表現はプレーンASCIIテキストであり、バイトコードやその他のバイナリ形式ではありません。 — パラダイム
命令的
によって設計された
サイモン・ペイトン・ジョーンズとノーマン・ラムジー
初登場 1997年 タイピングの規律
静的、弱い
Webサイト
https://www.cs.tufts.edu/~nr/c–/index.html
に影響を受けた ハ 2 つの主要なブランチが
C–、2005 年 5 月にリリースされた最終バージョン 2.0 の元のブランチ
Cmm、 Glasgow Haskell Compiler (GHC)で中間表現(IR)として積極的に使用されているフォーク

コンテンツ
1 デザイン
2 型システム
3 実装
3.1 ハスケル
4 こちらもご覧ください
5 参考文献
6 外部リンク

デザイン
C– は「ポータブルアセンブリ言語」であり、高品質のマシン コードを生成するコンパイラの実装を容易にするように設計されています。これは、低レベルのコード生成とプログラムの最適化を C コンパイラに委任することによって行われます。言語の構文は、C の本質的な機能とコード生成の容易さを妨げるため、可変引数関数、ポインター構文、および C の型システムの側面などの標準 C 機能を省略または変更しながら、C から大幅に借用しています。
言語の名前はジョークで、C– が C の縮小形式であり、C++ が基本的に C の拡張形式であることを示しています (C では、 「デクリメント」と「インクリメント」–を意味します)。 ++” それぞれ。)
C– の作業は 1990 年代後半に始まりました。カスタムコード ジェネレーターを作成すること自体が課題であり、当時の研究者が利用できるコンパイラーバックエンドは複雑で文書化も不十分だったため、いくつかのプロジェクトで C コードを生成するコンパイラーが作成されていました (たとえば、元のModula-3コンパイラー)。ただし、C は関数型言語には適し末尾呼び出しの最適化が保証されていないか、正確なガベージ コレクションや効率的な例外処理がサポートされC– は、これらすべてをサポートする、厳密に定義された C の単純な代替手段です。その最も革新的な機能は、ポータブル ガベージ コレクタ、例外処理システム、および任意の C コンパイラで動作するその他のランタイム機能の作成を可能にするランタイム インターフェイスです。
C– の最初のバージョンは、1998 年 4 月に MSRA の論文としてリリースされ、1999 年 1 月にはガベージ コレクションに関する論文が掲載されました。改訂されたマニュアルは 1999 年 5 月に HTML 形式で投稿されました。 2004年頃に完成し、2005年に正式にリリースされたバージョン2.

型システム
C_typeシステムは、高水準言語によって課せられる規則ではなく、ハードウェアによって課される制約を反映するように設計されています。レジスタまたはメモリに格納された値の型は、bit-vector の1 つだけです。ただし、bit-vector は多相型であり、いくつかの幅があります (例: bits8 )。
bits32、または
ビット64。浮動小数点型の別の 32 ビットまたは 64 ビット ファミリがサポートされています。ビットベクトル型に加えて、C– はブール型を提供します
boolは式によって計算でき、制御フローに使用できますが、レジスタまたはメモリに格納することはできません。アセンブリ言語と同様に、符号付き、符号なし、float、およびポインタの区別など、より高度な型規則は、C — 演算子またはその他の構文構造によって課せられます。C– は型チェックされておらず、呼び出し規約を強制またはチェックし : 28 
C バージョン 2 では、ビット ベクトル型と浮動小数点型の区別が取り除かれています。これらの型には、文字列の「種類」タグで注釈を付けて、変数の整数型と浮動小数点型、およびその格納動作 (グローバルまたはローカル) を区別することができます。前者は、整数値と浮動小数点値用に別々のレジスタを持つターゲットで役立ちます。ポインターとネイティブ ワードの特殊な型が導入されましたが、それらはターゲットに依存する長さのビット ベクトルにマップされます。 : 10 

実装
C– の仕様ページには、C– のいくつかの実装がリストされています。「最も積極的に開発された」コンパイラである Quick C– は、2013 年に放棄されました。

ハスケル
Simon Peyton Jones、João Dias、Norman Ramsey など、C– の一部の開発者は、GHC に取り組んでいるか、または GHC に取り組んできました。GHC の開発は C– 言語の拡張につながり、人間工学にC プリプロセッサを使用するCmm方言を形成しました。 .
GHC バックエンドは、LLVM IR、スロー C、または組み込みのネイティブ バックエンドを介して直接、C– を実行可能コードにさらに変換する役割を果たします。当初の意図にもかかわらず、GHC は C– に対して一般的な最適化の多くを実行します。他のコンパイラ IR と同様に、デバッグ用に C– 表現をダンプできます。もちろん、ターゲット固有の最適化は、後でバックエンドによって実行されます。

こちらもご覧ください

コンピューター プログラミング ポータル BCPL C++
LLVM

参考文献
^ Nordin、Thomas; ジョーンズ、サイモン・ペイトン。イグレシアス、パブロ・ノゲイラ; オリバ、ディノ (1998-04-23)。「C言語リファレンスマニュアル」 .
^ レイグ、フェルミン。ラムジー、ノーマン。ジョーンズ、サイモン・ペイトン (1999-01-01)。「C–: ガベージ コレクションをサポートする移植可能なアセンブリ言語」 : 1–28.
^ ラムジー、ノーマン。ジョーンズ、サイモン・ペイトン。「C — 言語仕様、バージョン 2.0」 (PDF) . 2019年12月11日閲覧。
^ GHC解説:.cmmファイルって一体何?
^ 「改善された LLVM バックエンド」 .
^ ノーディン、トーマス。ジョーンズ、サイモン・ペイトン。イグレシアス、パブロ・ノゲイラ; オリバ、ディノ (1999-05-23)。「C言語リファレンスマニュアル」 .
^ 「C — ダウンロード」 . www.cs.tufts.edu 。2019年12月11日閲覧。
^ GHC バックエンド ^ 最適化燃料を使用したコンパイラーのデバッグ

外部リンク
古い公式ウェブサイトのアーカイブ(cminusminus.org)
Quick C — コード アーカイブ(リファレンス実装)”

admin

Share
Published by
admin

Recent Posts

キャニオン–SRAM

Canyon%E2%80%93…

4週間 ago

キャニオン、ケノラ地区

Canyon,_Kenora_…

4週間 ago

Cantus Verkehrsgesellschaft

Cantus_Verkehrs…

4週間 ago

カントールキューブ

Cantor_cube 数学で…

4週間 ago

カントールの定理

Cantor's_theore…

4週間 ago

クレテイユ州

Cantons_of_Cr%C…

4週間 ago