1

ここで手を貸していただければ幸いです。

正しくコンパイルされる Ada プロジェクトがあります。私は好奇心旺盛なので、オブジェクト ファイルを obj ダンプすることにしました。驚いたことに、すべての Ada オブジェクトの .data セグメントに 1 つの単語が含まれています。objectname_E という名前もすべて同じです。誰かがこれが精緻化フラグであると提案しましたか? あれは正しいですか?

例。

0 .text         00000078  00000000  00000000  00000034  2**2
              CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data         00000001  00000000  00000000  000000ac  2**0
              CONTENTS, ALLOC, LOAD, DATA
2 .bss          00000000  00000000  00000000  000000ad  2**0
              ALLOC

00000000 g     O .data  00000001 watchdog_driver_E

これをグーグルで検索しようとしましたが、何も見つかりませんでした。

4

1 に答える 1

1

精緻化フラグです。

によって生成されたメインプログラムには、たとえばgnatbind次のようなプロシージャがあります。adainit

procedure adainit is
   ...
   E021 : Boolean; pragma Import (Ada, E021, "system__exception_table_E");
   ...
begin
   ...
   System.Exception_Table'Elab_Body;
   E021 := True;
   ...

明らかに、これは翻訳されたパッケージ内で使用され、パッケージが精緻化されているかどうかを確認し、そうでない場合は、精緻化前のアクセスエラーを報告します(精緻化フラグが実際にある例をすぐに見ることができないため、「可能性があります」と言いますアクセス)。

于 2011-06-25T16:41:21.163 に答える