diff options
Diffstat (limited to 'subx/016jump_relative.cc')
-rw-r--r-- | subx/016jump_relative.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/subx/016jump_relative.cc b/subx/016jump_relative.cc index 061a947f..9b411f07 100644 --- a/subx/016jump_relative.cc +++ b/subx/016jump_relative.cc @@ -2,6 +2,9 @@ //:: jump +:(before "End Initialize Op Names(name)") +put(name, 0xeb, "jump disp8 bytes away"); + :(scenario jump_rel8) == 0x1 # op ModR/M SIB displacement immediate @@ -23,6 +26,9 @@ case 0xeb: { // jump rel8 //:: jump if equal/zero +:(before "End Initialize Op Names(name)") +put(name, 0x74, "jump disp8 bytes away if ZF is set"); + :(scenario je_rel8_success) % ZF = true; == 0x1 @@ -59,6 +65,9 @@ case 0x74: { // jump rel8 if ZF //:: jump if not equal/not zero +:(before "End Initialize Op Names(name)") +put(name, 0x75, "jump disp8 bytes away if ZF is not set"); + :(scenario jne_rel8_success) % ZF = false; == 0x1 @@ -95,6 +104,9 @@ case 0x75: { // jump rel8 unless ZF //:: jump if greater +:(before "End Initialize Op Names(name)") +put(name, 0x7f, "jump disp8 bytes away if greater (ZF is unset, SF == OF)"); + :(scenario jg_rel8_success) % ZF = false; % SF = false; @@ -135,6 +147,9 @@ case 0x7f: { // jump rel8 if !SF and !ZF //:: jump if greater or equal +:(before "End Initialize Op Names(name)") +put(name, 0x7d, "jump disp8 bytes away if greater or equal (SF == OF)"); + :(scenario jge_rel8_success) % SF = false; % OF = false; @@ -173,6 +188,9 @@ case 0x7d: { // jump rel8 if !SF //:: jump if lesser +:(before "End Initialize Op Names(name)") +put(name, 0x7c, "jump disp8 bytes away if lesser (SF != OF)"); + :(scenario jl_rel8_success) % ZF = false; % SF = true; @@ -213,6 +231,9 @@ case 0x7c: { // jump rel8 if SF and !ZF //:: jump if lesser or equal +:(before "End Initialize Op Names(name)") +put(name, 0x7e, "jump disp8 bytes away if lesser or equal (ZF is set or SF != OF)"); + :(scenario jle_rel8_equal) % ZF = true; % SF = false; |