2017-08-01 20 views
-1

私は、一部のアルゴリズムとインラインアセンブリがプラットフォームに依存する可能性があることを理解します。たとえば、コンパイラを書く場合、コンパイラのソースコードはプラットフォームに依存しますか?コンパイラをコンパイルすると、私のアーキテクチャに対応するソースコードと同じバージョンを使用する必要がありますか?プラットフォームはいつプラットフォームに依存しますか?

+1

実際には2つの質問が1つにネストされていますが、それぞれが広すぎます。私が特定した質問:1)私が書いているコードを知る方法は移植性があります。 2)どのようにクロスプラットフォームになるコンパイラを書く。 –

+2

明らかなコメントを許してください。コードがプラットフォームに依存しない標準によってサポートされていない仮定を作成するとすぐに、プラットフォームに依存します*。それが*特定のプラットフォームであろうと、プラットフォームのサブセットであろうと、それは本当に関連性がありません。プールに落ちることができる方法はたくさんありますが、率直に言えばあまりにも多いですが、あなたが見る答えの中には、それらのいくつかを示すことができると確信しています。 POSIXのような標準が存在していて、コーディングしているアーキテクチャーに応じて、私はそれが些細なものから非常に難しいものまで変わると信じています。 – WhozCraig

答えて

4

言語で変更できるものを何とか取っておけば、プラットフォームに依存します。含むが、これらに限定されない:仕事を浮遊し、またはその構造方法の詳細を仮定して、特定の文字セットを(我々はすべての時からアスキーを想定)

  • 仮定

    • 一部プロセッサ機能(SSE/MMXなど)を利用するためにインラインアセンブリを追加するいくつかのエンディアン(htonからasside、正しく実装するとき正しく動作NTOS)
    • を想定書き込みコード
    • そのいくつかの外部ライブラリに依存 - これらのタイプは順に並んでい 私は、整数型の大きさを想定しcharshortintlonglong longたforgotが最大の一つ:ポータブルバニラCライブラリは
    は編集

  • ではありませんサイズはかなりですが、保証はほとんどありません。最も一般的なアーチは長さなどが異なるので... int8_t int16_t ...などの種類が導入されました。

    +3

    ハードウェア周辺機器、レジスタ、割り込み、タイミング仮定、メモリマップの使用... –

    関連する問題