pub fn split_registers<const NUMBER_OF_REGISTERS_IN_WORD: usize>(
    word: u32
) -> [u32; NUMBER_OF_REGISTERS_IN_WORD]
Expand description

Split the given registers into an array of bytes where each element corresponds to a register of NUMBER_OF_BITS_PER_REGISTER bits. The number of registers in a single 32-bit registers word is specified by NUMBER_OF_REGISTERS_IN_WORD.

Arguments

  • word - A 32-bit word containing the registers to be split.

Returns

An array of bytes where each element corresponds to a register of NUMBER_OF_BITS_PER_REGISTER bits. The length of the returned array is equal to NUMBER_OF_REGISTERS_IN_WORD.

Examples

Split a 32-bit word into 4 8-bit registers


let word = 0b0110_1001_1010_1111_0110_1001_1010_1111;
let registers = split_registers::<4>(word);
let expected = [0b1010_1111, 0b0110_1001, 0b1010_1111, 0b0110_1001];
assert_eq!(registers, expected, "Example 1, Expected: {:?}, got: {:?}", expected, registers);

Split a 32-bit word into 2 16-bit registers


let word = 0b1111_0000_1111_0000_1010_1010_0101_0101;
let registers = split_registers::<2>(word);
let expected = [0b1010_1010_0101_0101, 0b1111_0000_1111_0000];
assert_eq!(registers, expected, "Example 2, Expected: {:?}, got: {:?}", expected, registers);

Split a 32-bit word into 8 4-bit registers


let word = 0b1010_0101_1111_0000_1111_1111_0101_1010;
let registers = split_registers::<8>(word);
let expected = [0b1010, 0b0101, 0b1111, 0b1111, 0b0000, 0b1111, 0b0101, 0b1010];
assert_eq!(registers, expected, "Example 3, Expected: {:?}, got: {:?}", expected, registers);

Split a 32-bit word into 1 32-bit register


let word = 0b1111_1111_0000_0000_1111_0000_1111_1111;
let registers = split_registers::<1>(word);
let expected = [0b1111_1111_0000_0000_1111_0000_1111_1111];
assert_eq!(registers, expected, "Example 4, Expected: {:?}, got: {:?}", expected, registers);