質問

タイトルは言う。それはC/C++具体的には、いずれもこのことを考えて実装すると思いを定めるための標準インタフェースで容易に構築モジュールシステムなどにご利用いただけます。
うC/C++の"負け"の場合も定義され、標準ABI?

役に立ちましたか?

解決

各プロセッサ上で最も自然な方法で物事を実装する自由ます。

私は特に、cは他の言語よりも多くの異なるアーキテクチャの実装を準拠していることを想像してみてください。現在の一般的な、ハイエンドのために最適化されたABIを遵守、汎用CPUはそこにいくつかのオダーマシン上の不自然なねじれが必要になります。

他のヒント

下位互換性を持つABI選ばれた1を除くすべてのプラットフォームでます。

むしろ(それが唯一の唯一のプラットフォーム用に最適なように悲惨なことでしょう)、すべてのプラットフォーム用の汎用ABIより。標準の委員会は、各プラットフォームに固有のABIに準拠しますと言うことができます。

しかし:それを定義する(ドアを通って最初のコンパイラを?)。その場合には、それらは過度の競争上の優位性を得ることができます。または(別の恐ろしい考えです)コンパイラの5年後に委員ます。

また、それは、新しい最適化戦略へのさらなる研究を行うためのコンパイラleawayを与えるものではありません、あなたは標準が定義された時点で入手可能なトリックで立ち往生されるだろう。

C(またはC ++)言語仕様は、ソース言語を定義します。彼らは、(A、Cプログラムでも、人間スレーブによって解釈できるが、それは非倫理的ではなく、費用対効果的であろう)、それを実行するプロセッサを気にしないでください。

ABIは、ターゲット・システムに関する定義の何かです。これは、プロセッサとシステム(およびABIを以下の既存のライブラリ)に関連しています。

過去には、いくつかのプロセッサが(でも自分のマシンの命令セットはパブリックではありませんでした)独自の(すなわち未公開)の仕様を持っていたことが起こりました、そして、彼らは、コンパイラが続いた非公開のABIが(多かれ少なかれ尊重していました言語標準)。

プログラミング言語を定義すると、ABIを定義するのと同じスキルセットを必要としません。

ので、あなたも、既存のプロセッサのための新しいABIを定義することができ、それは多くの作業が必要となる(すべてのものを再コンパイルすると、コンパイラにパッチを適用、あなたが必要とするC&C ++標準ライブラリおよびすべてのユーティリティとライブラリを含みます)一般的に無用である。

実行速度は、プラットフォームの大半で大幅に苦しむでしょう。あまりにも多いので、おそらく、もはや組み込みプラットフォームの数のためにC言語を使用するのが妥当であろうと。標準化団体は、ABIと互換性のない様々なチップのメーカーによってもたらされる反トラスト法訴訟のために責任を負う可能性があります。

基本的に、誰もがC ++ 14件の提案の一つは、実際に標準のABIを定義DIDことを逃しました。これは、特にC ++のサブセットを使用するライブラリのための標準的なABIました。あなたは(名前空間のような)「ABI」のコードの特定のセクションを定義し、サブセットに適合するために必要です。

だけでなく、それがTHEハーブスタッター、C ++の専門家によって書かれ、 "例外C ++" 本シリーズをオーサリングしていること。

提案は、ポータブルABIが難しいだけでなく、新しいソリューションである多くの理由になります。

https://isocpp.org/blog/2014/05/n4028する

のhttp://www.open- std.org/jtc1/sc22/wg21/docs/papers/2014/n4028.pdfする

彼はCPUアーキテクチャの組み合わせであることを "ターゲット・プラットフォーム" を定義することに注意してください(のx64、x86の、ARMなど)、OS、及びbit化(32/64)。

ここでの目標は、実際には同じプラットフォーム上でC ++コード(Visual Studioの)他のC ++コード(GCC、古いVisual Studioの、など)に話をすることができるようにをしているので。これは、ライブラリがWindowsマシン上で動作する携帯電話をすることができますユニバーサルABIの目標ではありません。

この提案はC ++ 14で批准されませんでした、はしかしの、それがさらなる議論/反復のためのC ++ 17の "進化" 段階に移された。

ます。https: //www.ibm.com/developerworks/community/blogs/5894415f-be62-4bc0-81c5-3956e82276f3/entry/c_14_is_ratified_the_view_from_the_june_2014_c_standard_meeting?lang=enする

だから、2017年1月の時点で、私の指を交差させたまま。

まあ、そこに一つの標準ABIではないだろうが、1000についてあなたはOSとプロセッサ・アーキテクチャのすべての組み合わせのための1が必要になります。

は当初、何も失わないであろう。しかし結局、誰かがいくつかの恐ろしいバグを見つけるだろうし、彼らはどちらかの問題を引き起こし、ABIを壊し、それを修正、またはそれを残すだろう。

私は状況が今の罰金だと思います。理にかなっている、任意のOSは、自分自身のためのABIを定義して自由である(と彼らはありません)。そのABI、ないC / C ++の標準を定義するためにOSの仕事である必要があります。

Cた標準ABIであるものに使われた最も標準的なABIさんC ABIは、ABIの選択が異なる言語やシステムを結合しれます。C ABIの種は、普通ABIの他ABIs.C++はさらに複雑なものが伸びたことに基づき、実際には、標準C++ABIであり、現在の課題、自由C++コンパイラのための実装を独自にターゲット機コードです。しかし、そうでない標準ABI;見 に適した抜群の高性C++ABI.

なので問題ない"何もいらっしゃるかもしれゆったり?", ではなく、"何が彼らゆるんでいませんか?" ばってんゆう).

注: 必要な意ABIs常に建築やOSに依存します。そうした意味で"標準ABI"は、"標準横断構築やプラットフォーム"、それがないかもしれないられているので、お子さまがどのようなものが、"コミュニケーションプロトコル

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top