Ada- 'at' 和 'range' 是什么意思/做什么?

Ada- what do 'at' and 'range' mean/ do?

我正在调试一些分两部分编写的软件——一部分用 C++ 编写,另一部分用 Ada 编写——这是我以前从未使用过的。

在阅读一些 Ada 代码并寻找包含特定数据的变量时,我发现这些变量在 for 循环中的 record 中使用,例如:

for myRecord use
    record
        eta    at    8    range    0 .. 31;
        ttg    at    16   range    0 .. 63;
    end record;

atrange 在 IDE (GPS-GNAT Programming Studio) 中以粗体显示,我认为这意味着它们是关键字/在Ada...有人可以向我解释这个结构是什么/做什么吗?这里的数字是否与分配给变量的内存量/它们的内存位置有关?

eta 从记录开始的字节偏移量 8 的第 0 位开始,并继续到第 31 位;即它从字节 8 开始占用 32 位。

同理,ttg占用64位,从字节16的第0位开始。

参见ARM 13.5.1, Record Representation Clauses