阿达记录表示

时间:2016-08-23 07:46:10

标签: record ada

我的记录类型如下:

type Rec_T is record
   a : Bit_12_T;
   b : Bit_4_T;
end record;

其中Bit_12_T is mod 2**12Bit_4_T is mod 2**4

为了告诉编译器这条记录的精确对齐,我使用了for use record语句。但是,我想在字节之间拆分a字段,所以我尝试按如下方式进行:

for Rec_T use record
   a at 0 range 0 .. 7; -- The 1st byte
   a at 1 range 0 .. 3; -- The 2nd byte
   b at 1 range 4 .. 7;
end record;

显然,这不是这样做的方法,因为编译器抱怨"组件子句先前在行..."。

问题:是否可以在字节之间拆分组件以及如何进行操作?如果不可能,我应该有a_high和a_low然后使用一些位操作将它们合并在一起吗?

1 个答案:

答案 0 :(得分:2)

将位置视为位数组,而不是字节序列。因此,这应该有效:

:before

有关详细信息,请参阅documentation here,特别是页面末尾的示例,其中显示了类似的情况。