| # Semantic Bit Index |
| |
| 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. |
| |
| ## Type Parameters |
| |
| - `R`: The register element that this index governs. |
| |
| ## Validity |
| |
| 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. |
| |
| ## Construction |
| |
| 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. |
| |
| [`BitOrder`]: crate::order::BitOrder |
| [`BitOrder::at`]: crate::order::BitOrder::at |
| [`R::BITS`]: funty::Integral::BITS |