This type is a counter in the ring 0 .. R::BITS
and serves to mark a semantic index within some register element. It is a virtual index, and is the stored value used in pointer encodings to track region start information.
It is translated to a real index through the BitOrder
trait. This virtual index is the only counter that can be used for address computation, and once lowered to an electrical index through BitOrder::at
, the electrical address can only be used for setting up machine instructions.
R
: The register element that this index governs.Values of this type are required to be in the range 0 .. R::BITS
. Any value not less than R::BITS
makes the program invalid, and will likely cause either a crash or incorrect memory access.
This type can never be constructed outside of the bitvec
crate. It is passed in to BitOrder
implementations, which may use it to construct electrical position values from it. All values of this type constructed by bitvec
are known to be correct in their region; no other construction site can be trusted.