理解にどのようAda列化記録
-
01-07-2019 - |
質問
すればよいのでしょうかを予測することができたこととなるバイナリの呼び出書Adaにserialize。だがで見ることができます。
しているのか教えてくださいAda遺産ソフトウェアを生産するバイナリファイルに書き込みグラン記録は、デバッグはC++のプログラムを書く対応バイナリファイルです。そこで、私は、かルールAdaする場合は以下のような列化の記録ができるよう、いのC++コードを機能的に同等です。
解決
どなく、追加の指導のコンパイラは独自の決定をすることでしょうて記録す。最適なアプローチが変更され、元のコードを書く記録の特定のレイアウト。特に、 記録表現条項 できるAdaプログラマを指定しの物理レイアウトします。とを確認しておきましょうかどうかのコードは、この型ます。そうであるとすればそれはこのお答え。
他のヒント
のフォーマットserialised出力'を書いて も い表現の条項.
デフォルトでは、コンパイラの出力は記録の成分な配向のパディングの順ている記述の宣言を使用し、翻訳スキームで定義されていないの基準では得られない場合があり相互運用性とコンパイラ).GNATにGCC Adaのコンパイラの出力を各コンポーネント全体の数はバイトです。
したい場合はストリーム値型を異なる形式をオーバーライドすることができ'を書のタイプです。としては珍しいとえば、ストリーム形式をサポートしています。
基本的には、コンパイラ、順番を変更コンポーネントを記録種類を使用しない限り、pragmaパックやpragma PRESERVE_LAYOUTコマンドにご記録です。また、コンパイラパッドオブジェクトの維持に配置の記録。部品。
整数:8、16、32ビットtwos-補署名数
Float:32ビットIEEE形式
Long_Float:64ビットIEEE形式
固定ポイント:8、16、32ビット;しかし、デルタの指定に影響を及ぼしている16または32
列挙は:整数値で、通常、最初の要素は0で表され
Boolean値を代入:列挙オブジェクトは、8ビット長は、LSBの店舗の価値:0=falseの場合、1=true
文字:列挙オブジェクトは、8ビット長符号なし0-127
アクセスの種類:32ビット、32ビットの値0はNULL
配列:保存が連続して行-大きめサイズにより基底タイプです。の配列が違いすべての要素を適切な配置をその種類です。
の Ada95言語リファレンスマニュアル というセ13.13.2):
"小型、表現のストリーム要素は実装で定義されています。複合タイプには、書属性のための各コンポーネントと呼ばれる標準です。の標準的な順序は、部品の最後の寸法変速のためには、"配列"と位置集約のためにあるのです。