Macro process_image::tag

source ·
macro_rules! tag {
    ($buf:expr, X, $addr1:literal, $addr2:literal) => { ... };
    ($buf:expr, B, $addr:literal) => { ... };
    ($buf:expr, W, $addr:literal) => { ... };
    ($buf:expr, D, $addr:literal) => { ... };
    ($buf:expr, L, $addr:literal) => { ... };
    ($buf:expr, $addr1:literal, $addr2:literal) => { ... };
}
Expand description

Read tag values from a process image with absolute addressing.

Addresses must be aligned to the size of the datatype (i.e. word=2, dword=4, lword=8).

Multi-byte datatypes are always accessed in big-endian order.

Example

let pi = [0x00; 16];

// Bit access
let b1: bool = process_image::tag!(&pi, X, 0, 0);   // %MX0.0
let b2: bool = process_image::tag!(&pi, 0, 1);      // %MX0.1

// Byte access
let by: u8 = process_image::tag!(&pi, B, 1);        // %MB1

// Word access
let w: u16 = process_image::tag!(&pi, W, 2);        // %MW2

// Double word access
let d: u32 = process_image::tag!(&pi, D, 4);        // %MD4

// Long word access
let l: u64 = process_image::tag!(&pi, L, 8);        // %ML8