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