ADA95中的地址绑定?

时间:2016-02-22 08:51:07

标签: ada memory-address

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

将地址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);

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

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

1 个答案:

答案 0 :(得分:5)

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