-1
私は、一部のアルゴリズムとインラインアセンブリがプラットフォームに依存する可能性があることを理解します。たとえば、コンパイラを書く場合、コンパイラのソースコードはプラットフォームに依存しますか?コンパイラをコンパイルすると、私のアーキテクチャに対応するソースコードと同じバージョンを使用する必要がありますか?プラットフォームはいつプラットフォームに依存しますか?
私は、一部のアルゴリズムとインラインアセンブリがプラットフォームに依存する可能性があることを理解します。たとえば、コンパイラを書く場合、コンパイラのソースコードはプラットフォームに依存しますか?コンパイラをコンパイルすると、私のアーキテクチャに対応するソースコードと同じバージョンを使用する必要がありますか?プラットフォームはいつプラットフォームに依存しますか?
言語で変更できるものを何とか取っておけば、プラットフォームに依存します。含むが、これらに限定されない:仕事を浮遊し、またはその構造方法の詳細を仮定して、特定の文字セットを(我々はすべての時からアスキーを想定)
char
、short
、int
、long
、long long
たforgotが最大の一つ:ポータブルバニラCライブラリは
int8_t
int16_t
...などの種類が導入されました。
ハードウェア周辺機器、レジスタ、割り込み、タイミング仮定、メモリマップの使用... –
実際には2つの質問が1つにネストされていますが、それぞれが広すぎます。私が特定した質問:1)私が書いているコードを知る方法は移植性があります。 2)どのようにクロスプラットフォームになるコンパイラを書く。 –
明らかなコメントを許してください。コードがプラットフォームに依存しない標準によってサポートされていない仮定を作成するとすぐに、プラットフォームに依存します*。それが*特定のプラットフォームであろうと、プラットフォームのサブセットであろうと、それは本当に関連性がありません。プールに落ちることができる方法はたくさんありますが、率直に言えばあまりにも多いですが、あなたが見る答えの中には、それらのいくつかを示すことができると確信しています。 POSIXのような標準が存在していて、コーディングしているアーキテクチャーに応じて、私はそれが些細なものから非常に難しいものまで変わると信じています。 – WhozCraig