emu: accept cycle cost for modrm spec (and ignore for now)
This commit is contained in:
@@ -114,7 +114,7 @@ macro_rules! step {
|
|||||||
};
|
};
|
||||||
|
|
||||||
(@modrm16 $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt,
|
(@modrm16 $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt,
|
||||||
($modrm_val:ident, { $($val:literal => $($args:ident = $argrhs:tt),*),*$(,)? }, $modrm8:tt)) => { {
|
($modrm_val:ident, { $($val:literal => $($args:ident = $argrhs:tt),* / $mode:ident $cycles:literal),*$(,)? }, $modrm8:tt)) => { {
|
||||||
let modrm_val = $modrm_val & !0x38;
|
let modrm_val = $modrm_val & !0x38;
|
||||||
match modrm_val {
|
match modrm_val {
|
||||||
$( $val => step!(@push $cookie, ($($args = $argrhs)* ) ) ),*,
|
$( $val => step!(@push $cookie, ($($args = $argrhs)* ) ) ),*,
|
||||||
@@ -123,7 +123,7 @@ macro_rules! step {
|
|||||||
} };
|
} };
|
||||||
|
|
||||||
(@modrm8 $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt,
|
(@modrm8 $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt,
|
||||||
($modrm_val:ident, $modrm16:tt, { $($val:literal => $($args:ident = $argrhs:tt),*),*$(,)? } )) => { {
|
($modrm_val:ident, $modrm16:tt, { $($val:literal => $($args:ident = $argrhs:tt),* / $mode:ident $cycles:literal),*$(,)? } )) => { {
|
||||||
let modrm_val = $modrm_val & !0x38;
|
let modrm_val = $modrm_val & !0x38;
|
||||||
match modrm_val {
|
match modrm_val {
|
||||||
$( $val => step!(@push $cookie, ($($args = $argrhs)* ) ) ),*,
|
$( $val => step!(@push $cookie, ($($args = $argrhs)* ) ) ),*,
|
||||||
@@ -295,24 +295,24 @@ impl i8088 {
|
|||||||
0xE8 => call[reg=ip, regval=ss, reg=sp, mem, rel16] / 23,
|
0xE8 => call[reg=ip, regval=ss, reg=sp, mem, rel16] / 23,
|
||||||
},
|
},
|
||||||
modrm16: {
|
modrm16: {
|
||||||
0xC0 => reg=a,
|
0xC0 => reg=a / R 0,
|
||||||
0xC1 => reg=c,
|
0xC1 => reg=c / R 0,
|
||||||
0xC2 => reg=d,
|
0xC2 => reg=d / R 0,
|
||||||
0xC3 => reg=b,
|
0xC3 => reg=b / R 0,
|
||||||
0xC4 => reg=sp,
|
0xC4 => reg=sp / R 0,
|
||||||
0xC5 => reg=bp,
|
0xC5 => reg=bp / R 0,
|
||||||
0xC6 => reg=si,
|
0xC6 => reg=si / R 0,
|
||||||
0xC7 => reg=di,
|
0xC7 => reg=di / R 0,
|
||||||
},
|
},
|
||||||
modrm8: {
|
modrm8: {
|
||||||
0xC0 => reglo=a,
|
0xC0 => reglo=a / R 0,
|
||||||
0xC1 => reglo=c,
|
0xC1 => reglo=c / R 0,
|
||||||
0xC2 => reglo=d,
|
0xC2 => reglo=d / R 0,
|
||||||
0xC3 => reglo=b,
|
0xC3 => reglo=b / R 0,
|
||||||
0xC4 => reghi=a,
|
0xC4 => reghi=a / R 0,
|
||||||
0xC5 => reghi=c,
|
0xC5 => reghi=c / R 0,
|
||||||
0xC6 => reghi=d,
|
0xC6 => reghi=d / R 0,
|
||||||
0xC7 => reghi=b,
|
0xC7 => reghi=b / R 0,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user