emu: accept cycle cost for modrm spec (and ignore for now)

This commit is contained in:
2021-03-12 04:10:15 -08:00
parent c372a96b7c
commit adb7e672d9

View File

@@ -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,
}) })
} }
} }