aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2026-05-25 17:32:57 +0000
committeriximeow <me@iximeow.net>2026-05-25 18:00:30 +0000
commitf2a2a09688421f2c532ab6f02527bf68f095407a (patch)
treee7b5c3c5302c4c1a4ef89c1a5852b50059850986 /test
parent94f39674e0aee55ff6f6bb59f7d7c4873d2d1a6c (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.rs2
-rw-r--r--test/protected_mode/mod.rs8
-rw-r--r--test/real_mode/mod.rs4
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");