aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/imm.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/imm.rs')
-rw-r--r--src/imm.rs27
1 files changed, 21 insertions, 6 deletions
diff --git a/src/imm.rs b/src/imm.rs
index bcf0d31..85b2cbc 100644
--- a/src/imm.rs
+++ b/src/imm.rs
@@ -1,3 +1,6 @@
+//! Definition of different immediate types which are used as input operands for various
+//! instructions.
+
/// Trait to interact with immediate operands.
pub(crate) trait Imm {
/// Get immediate operand as slice of bytes.
@@ -5,8 +8,8 @@ pub(crate) trait Imm {
}
macro_rules! impl_imm {
- ($name:ident, $size:expr, from: $( $from:ty ),* $(,)?) => {
- /// Immediate operand.
+ (#[$doc:meta] $name:ident, $size:expr, from: { $( $from:ty ),* $(,)? }) => {
+ #[$doc]
pub struct $name([u8; $size]);
impl Imm for $name {
@@ -29,7 +32,19 @@ macro_rules! impl_imm {
}
}
-impl_imm!(Imm8, 1, from: u8, i8);
-impl_imm!(Imm16, 2, from: u16, i16, u8, i8);
-impl_imm!(Imm32, 4, from: u32, i32, u16, i16, u8, i8);
-impl_imm!(Imm64, 8, from: u64, i64, u32, i32, u16, i16, u8, i8);
+impl_imm!(
+ /// Type representing an 8 bit immediate.
+ Imm8, 1, from: { u8, i8 }
+);
+impl_imm!(
+ /// Type representing a 16 bit immediate.
+ Imm16, 2, from: { u16, i16, u8, i8 }
+);
+impl_imm!(
+ /// Type representing a 32 bit immediate.
+ Imm32, 4, from: { u32, i32, u16, i16, u8, i8 }
+);
+impl_imm!(
+ /// Type representing a 64 bit immediate.
+ Imm64, 8, from: { u64, i64, u32, i32, u16, i16, u8, i8 }
+);