ADA95中的地址绑定?

Vij*_*ogi 0 ada memory-address

我们实时开发使用ADA语言(ADA95).我们面临着地址绑定机制的问题.在我们使用ADA83之前,其中直接机制是
用于16#12345678#的x;

将地址16#12345678#分配给变量x;但在ADA95中不支持此语法.分配的其他方法是声明变量记录.然后创建一些系统包的对象然后传递地址.这对于想要处理单个变量非常麻烦.此方法仅适用于具有连续存储位置的多个变量,因此您可以为第一个分配地址,其余部分将自动对齐.

 TYPE SIU_Type IS                       
  RECORD
   SIU_Reserved0  : GLOBAL_TYPE.ORDINAL;
   MIDR           : GLOBAL_TYPE.ORDINAL;
   SIU_Reserved00 : GLOBAL_TYPE.ORDINAL;


  END RECORD;

  package SIU_Conv is new System.Address_To_Access_Conversions(SIU_Type);
  SIU : constant SIU_Conv.Object_Pointer := SIU_Conv.To_Pointer(SIU_Address);
Run Code Online (Sandbox Code Playgroud)

在我们的项目中,我们在许多需要地址分配的地方使用变量,但第二种方式非常简单,并且使代码非常复杂.

如果有的话,Plaese建议任何其他方式.

egi*_*lhh 5

Ada95语法应该是: for X'Address use System.Storage_Elements.To_Address(16#12345678#); 为了避免任何隐式初始化,您还应该:pragma Import(Ada, X);