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建议任何其他方式.
Ada95语法应该是:
for X'Address use System.Storage_Elements.To_Address(16#12345678#);
为了避免任何隐式初始化,您还应该:pragma Import(Ada, X);
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |