aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2021-08-21 14:33:13 -0700
committeriximeow <me@iximeow.net>2021-08-21 14:33:13 -0700
commitdff9a7e4a14984705db8fb18550af5a4fa9ce3d5 (patch)
tree01fcd2794040ad1b29ac2638726a090a312f05f4 /test
parentd7208834963c46a6da74a3837d9e82bad33dfd7f (diff)
fix negative relative branches (again!!! +- is bad!!!)
Diffstat (limited to 'test')
-rw-r--r--test/long_mode/mod.rs3
-rw-r--r--test/protected_mode/mod.rs3
-rw-r--r--test/real_mode/mod.rs3
3 files changed, 6 insertions, 3 deletions
diff --git a/test/long_mode/mod.rs b/test/long_mode/mod.rs
index 015f1c6..dab4e91 100644
--- a/test/long_mode/mod.rs
+++ b/test/long_mode/mod.rs
@@ -1212,6 +1212,7 @@ fn test_prefixes() {
fn test_control_flow() {
test_display(&[0x73, 0x31], "jnb $+0x31");
test_display(&[0x72, 0x5a], "jb $+0x5a");
+ test_display(&[0x72, 0xf0], "jb $-0x10");
test_display(&[0x0f, 0x86, 0x8b, 0x01, 0x00, 0x00], "jna $+0x18b");
test_display(&[0x74, 0x47], "jz $+0x47");
test_display(&[0xff, 0x15, 0x7e, 0x72, 0x24, 0x00], "call qword [rip + 0x24727e]");
@@ -1225,7 +1226,7 @@ fn test_control_flow() {
test_display(&[0xe1, 0x12], "loopz $+0x12");
test_display(&[0xe2, 0x12], "loop $+0x12");
test_display(&[0xe3, 0x12], "jrcxz $+0x12");
- test_display(&[0xe3, 0xf0], "jrcxz $+-0x10");
+ test_display(&[0xe3, 0xf0], "jrcxz $-0x10");
test_display(&[0xc3], "ret");
}
diff --git a/test/protected_mode/mod.rs b/test/protected_mode/mod.rs
index 5ed69ed..41ecbb7 100644
--- a/test/protected_mode/mod.rs
+++ b/test/protected_mode/mod.rs
@@ -1096,6 +1096,7 @@ fn test_prefixes() {
fn test_control_flow() {
test_display(&[0x73, 0x31], "jnb $+0x31");
test_display(&[0x72, 0x5a], "jb $+0x5a");
+ test_display(&[0x72, 0xf0], "jb $-0x10");
test_display(&[0x0f, 0x86, 0x8b, 0x01, 0x00, 0x00], "jna $+0x18b");
test_display(&[0x74, 0x47], "jz $+0x47");
test_display(&[0xff, 0x15, 0x7e, 0x72, 0x24, 0x00], "call dword [0x24727e]");
@@ -1109,7 +1110,7 @@ fn test_control_flow() {
test_display(&[0xe1, 0x12], "loopz $+0x12");
test_display(&[0xe2, 0x12], "loop $+0x12");
test_display(&[0xe3, 0x12], "jecxz $+0x12");
- test_display(&[0xe3, 0xf0], "jecxz $+-0x10");
+ test_display(&[0xe3, 0xf0], "jecxz $-0x10");
test_display(&[0xc3], "ret");
}
diff --git a/test/real_mode/mod.rs b/test/real_mode/mod.rs
index 8543fae..dfbe4e8 100644
--- a/test/real_mode/mod.rs
+++ b/test/real_mode/mod.rs
@@ -16927,6 +16927,7 @@ fn test_real_mode() {
test_display(&[0x68, 0x7f, 0x63], "push 0x637f");
test_display(&[0x6b, 0x43, 0x6f, 0x6d], "imul ax, word [bp + di + 0x6f], 0x6d");
test_display(&[0x72, 0x5a], "jb $+0x5a");
+ test_display(&[0x72, 0xf0], "jb $-0x10");
test_display(&[0x73, 0x31], "jnb $+0x31");
test_display(&[0x74, 0x47], "jz $+0x47");
test_display(&[0x81, 0xec, 0x10, 0x03], "sub sp, 0x310");
@@ -17758,7 +17759,7 @@ fn test_real_mode() {
test_display(&[0xe1, 0x12], "loopz $+0x12");
test_display(&[0xe2, 0x12], "loop $+0x12");
test_display(&[0xe3, 0x12], "jcxz $+0x12");
- test_display(&[0xe3, 0xf0], "jcxz $+-0x10");
+ test_display(&[0xe3, 0xf0], "jcxz $-0x10");
test_display(&[0xe4, 0x99], "in al, 0x99");
test_display(&[0xe5, 0x99], "in ax, 0x99");
test_display(&[0xe6, 0x99], "out 0x99, al");