diff options
| author | iximeow <me@iximeow.net> | 2026-05-25 17:32:57 +0000 |
|---|---|---|
| committer | iximeow <me@iximeow.net> | 2026-05-25 18:00:30 +0000 |
| commit | f2a2a09688421f2c532ab6f02527bf68f095407a (patch) | |
| tree | e7b5c3c5302c4c1a4ef89c1a5852b50059850986 /test | |
| parent | 94f39674e0aee55ff6f6bb59f7d7c4873d2d1a6c (diff) | |
j*cxz/pusha/popa alternate size forms
these all existed since forever but the library did not distinguish them
and did not provide prefix information for users to tell which had been
decoded.
Diffstat (limited to 'test')
| -rw-r--r-- | test/long_mode/mod.rs | 2 | ||||
| -rw-r--r-- | test/protected_mode/mod.rs | 8 | ||||
| -rw-r--r-- | test/real_mode/mod.rs | 4 |
3 files changed, 12 insertions, 2 deletions
diff --git a/test/long_mode/mod.rs b/test/long_mode/mod.rs index eaca39d..c7fb2be 100644 --- a/test/long_mode/mod.rs +++ b/test/long_mode/mod.rs @@ -1341,6 +1341,8 @@ fn test_control_flow() { test_display(&[0xe2, 0x12], "loop $+0x12"); test_display(&[0xe3, 0x12], "jrcxz $+0x12"); test_display(&[0xe3, 0xf0], "jrcxz $-0x10"); + test_display(&[0x67, 0xe3, 0x12], "jecxz $+0x12"); + test_display(&[0x67, 0xe3, 0xf0], "jecxz $-0x10"); test_display(&[0xc3], "ret"); } diff --git a/test/protected_mode/mod.rs b/test/protected_mode/mod.rs index 50b4887..f6e69cf 100644 --- a/test/protected_mode/mod.rs +++ b/test/protected_mode/mod.rs @@ -1160,6 +1160,8 @@ fn test_control_flow() { test_display(&[0xe2, 0x12], "loop $+0x12"); test_display(&[0xe3, 0x12], "jecxz $+0x12"); test_display(&[0xe3, 0xf0], "jecxz $-0x10"); + test_display(&[0x67, 0xe3, 0x12], "jcxz $+0x12"); + test_display(&[0x67, 0xe3, 0xf0], "jcxz $-0x10"); test_display(&[0xc3], "ret"); } @@ -2528,8 +2530,10 @@ fn only_32bit() { test_display(&[0x67, 0xa1, 0xc0, 0xb0], "mov eax, dword [0xb0c0]"); test_display(&[0x66, 0x67, 0xa1, 0xc0, 0xb0], "mov ax, word [0xb0c0]"); - test_display(&[0x60], "pusha"); - test_display(&[0x61], "popa"); + test_display(&[0x60], "pushad"); + test_display(&[0x61], "popad"); + test_display(&[0x66, 0x60], "pusha"); + test_display(&[0x66, 0x61], "popa"); test_display(&[0xce], "into"); test_display(&[0x06], "push es"); test_display(&[0x07], "pop es"); diff --git a/test/real_mode/mod.rs b/test/real_mode/mod.rs index 67798eb..bce199b 100644 --- a/test/real_mode/mod.rs +++ b/test/real_mode/mod.rs @@ -440,6 +440,8 @@ fn test_real_mode() { test_display(&[0x5e], "pop si"); test_display(&[0x60], "pusha"); test_display(&[0x61], "popa"); + test_display(&[0x66, 0x60], "pushad"); + test_display(&[0x66, 0x61], "popad"); test_display(&[0x62, 0xf1, 0x7c, 0x08, 0x10, 0x0a], "vmovups xmm1, xmmword [bp + si * 1]"); test_display(&[0x62, 0xf1, 0x7c, 0x08, 0x10, 0x4a, 0x01], "vmovups xmm1, xmmword [bp + si * 1 + 0x10]"); test_display(&[0x62, 0xf1, 0x7c, 0x08, 0x10, 0xca], "vmovups xmm1, xmm2"); @@ -17974,6 +17976,8 @@ fn test_real_mode() { test_display(&[0xe2, 0x12], "loop $+0x12"); test_display(&[0xe3, 0x12], "jcxz $+0x12"); test_display(&[0xe3, 0xf0], "jcxz $-0x10"); + test_display(&[0x67, 0xe3, 0x12], "jecxz $+0x12"); + test_display(&[0x67, 0xe3, 0xf0], "jecxz $-0x10"); test_display(&[0xe4, 0x99], "in al, 0x99"); test_display(&[0xe5, 0x99], "in ax, 0x99"); test_display(&[0xe6, 0x99], "out 0x99, al"); |
