我们使用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建议任何其他方式,如果有的话。
答案 0 :(得分:5)
Ada95语法应该是:
for X'Address use System.Storage_Elements.To_Address(16#12345678#);
为了避免任何隐式初始化,您还应该执行:pragma Import(Ada, X);