added/fixed various cmovXX opcodes (#5033)

As per the Intel manual:

```
CMOVcc - Conditional Move:
| Opcode          | Instruction       | Op/En| 64-Bit Mode| Compat/Leg Mode| Description                            
| 0F 47 /r        | CMOVA r16, r/m16  | RM   | Valid      | Valid          | Move if above (CF=0 and ZF=0).         
| REX.W + 0F 43 /r| CMOVAE r64, r/m64 | RM   | Valid      | N.E.           | Move if above or equal (CF=0).         
| 0F 42 /r        | CMOVB r16, r/m16  | RM   | Valid      | Valid          | Move if below (CF=1).                  
| REX.W + 0F 46 /r| CMOVBE r64, r/m64 | RM   | Valid      | N.E.           | Move if below or equal (CF=1 or ZF=1). 
| 0F 42 /r        | CMOVC r16, r/m16  | RM   | Valid      | Valid          | Move if carry (CF=1).                  
| REX.W + 0F 44 /r| CMOVE r64, r/m64  | RM   | Valid      | N.E.           | Move if equal (ZF=1).                  
| 0F 4F /r        | CMOVG r16, r/m16  | RM   | Valid      | Valid          | Move if greater (ZF=0 and SF=OF).      
| REX.W + 0F 4D /r| CMOVGE r64, r/m64 | RM   | Valid      | N.E.           | Move if greater or equal (SF=OF).      
| 0F 4C /r        | CMOVL r16, r/m16  | RM   | Valid      | Valid          | Move if less (SF!= OF).                 
| REX.W + 0F 4E /r| CMOVLE r64, r/m64 | RM   | Valid      | N.E.           | Move if less or equal (ZF=1 or SF!= OF).
| 0F 46 /r        | CMOVNA r16, r/m16 | RM   | Valid      | Valid          | Move if not above (CF=1 or ZF=1).      
| REX.W + 0F 42 /r| CMOVNAE r64, r/m64| RM   | Valid      | N.E.           | Move if not above or equal (CF=1).     
| 0F 43 /r        | CMOVNB r16, r/m16 | RM   | Valid      | Valid          | Move if not below (CF=0).              
| REX.W + 0F 47 /r| CMOVNBE r64, r/m64| RM   | Valid      | N.E.           | Move if not below or equal (CF=0 and   
|                 |                   |      |            |                | ZF=0).                                 
| 0F 43 /r        | CMOVNC r16, r/m16 | RM   | Valid      | Valid          | Move if not carry (CF=0).              
| REX.W + 0F 45 /r| CMOVNE r64, r/m64 | RM   | Valid      | N.E.           | Move if not equal (ZF=0).              
| 0F 4E /r        | CMOVNG r16, r/m16 | RM   | Valid      | Valid          | Move if not greater (ZF=1 or SF!= OF).  
| REX.W + 0F 4C /r| CMOVNGE r64, r/m64| RM   | Valid      | N.E.           | Move if not greater or equal (SF!= OF). 
| 0F 4D /r        | CMOVNL r16, r/m16 | RM   | Valid      | Valid          | Move if not less (SF=OF).              
| REX.W + 0F 4F /r| CMOVNLE r64, r/m64| RM   | Valid      | N.E.           | Move if not less or equal (ZF=0 and    
|                 |                   |      |            |                | SF=OF).                                
| 0F 41 /r        | CMOVNO r16, r/m16 | RM   | Valid      | Valid          | Move if not overflow (OF=0).           
| REX.W + 0F 4B /r| CMOVNP r64, r/m64 | RM   | Valid      | N.E.           | Move if not parity (PF=0).             
| 0F 49 /r        | CMOVNS r16, r/m16 | RM   | Valid      | Valid          | Move if not sign (SF=0).               
| REX.W + 0F 45 /r| CMOVNZ r64, r/m64 | RM   | Valid      | N.E.           | Move if not zero (ZF=0).               
| 0F 40 /r        | CMOVO r16, r/m16  | RM   | Valid      | Valid          | Move if overflow (OF=1).               
| REX.W + 0F 4A /r| CMOVP r64, r/m64  | RM   | Valid      | N.E.           | Move if parity (PF=1).                 
| 0F 4A /r        | CMOVPE r16, r/m16 | RM   | Valid      | Valid          | Move if parity even (PF=1).            
| REX.W + 0F 4B /r| CMOVPO r64, r/m64 | RM   | Valid      | N.E.           | Move if parity odd (PF=0).             
| 0F 48 /r        | CMOVS r16, r/m16  | RM   | Valid      | Valid          | Move if sign (SF=1).                   
| REX.W + 0F 44 /r| CMOVZ r64, r/m64  | RM   | Valid      | N.E.           | Move if zero (ZF=1).
```

* fixed typo

* or -> nor
This commit is contained in:
Duncan Ogilvie 2016-05-30 04:20:19 +02:00 committed by radare
parent 238cf897b8
commit 18ffea18cc

View File

@ -45,24 +45,36 @@ clflush=flush cache line
cli=clear interrupt flag
clts=clear task-switched flag in cr0
cmc=complement carry flag
cmovb=conditional move - below/not above or equal/carry (cf=1)
cmovbe=conditional move - below or equal/not above (cf=1 and zf=1)
cmove=conditional move - if equal (zf=1)
cmovl=conditional move - less/not greater (sf!=of)
cmovle=conditional move - less or equal/not greater ((zf=1) or (sf!=of))
cmova=conditional move - above/not below nor equal (cf=0 and zf=0)
cmovae=conditional move - above or equal/not below/not carry (cf=0)
cmovb=conditional move - below/not above nor equal/carry (cf=1)
cmovbe=conditional move - below or equal/not above (cf=1 or zf=1)
cmovc=conditional move - carry/below/not above or equal (cf=1)
cmove=conditional move - equal/zero (zf=1)
cmovg=conditional move - greater/not less nor equal (zf=0 and sf=of)
cmovge=conditional move - greater or equal/not less (sf=of)
cmovl=conditional move - less/not greater nor equal (sf!=of)
cmovle=conditional move - less or equal/not greater (zf=1 or sf!=of)
cmovna=conditional move - not above/below or equal (cf=1 or zf=1)
cmovnae=conditional move - not above nor equal/below/carry (cf=1)
cmovnb=conditional move - not below/above or equal/not carry (cf=0)
cmovnbe=conditional move - not below or equal/above (cf=0 and zf=0)
cmovne=conditional move - if not equal (zf=0)
cmovnbe=conditional move - not below nor equal/above (cf=0 and zf=0)
cmovnc=conditional move - not carry/above or equal/not below (cf=0)
cmovne=conditional move - not equal/not zero (zf=0)
cmovng=conditional move - not greater/less or equal (zf=1 or sf!=of)
cmovnge=conditional move - not greater nor equal/less (sf!=of)
cmovnl=conditional move - not less/greater or equal (sf=of)
cmovnle=conditional move - not less nor equal/greater ((zf=0) and (sf=of))
cmovnle=conditional move - not less nor equal/greater (zf=0 and sf=of)
cmovno=conditional move - not overflow (of=0)
cmovnp=conditional move - not parity/parity odd
cmovnp=conditional move - not parity/parity odd (pf=0)
cmovns=conditional move - not sign (sf=0)
cmovnz=conditional move - not zero/not equal (zf=1)
cmovnz=conditional move - not zero/not equal (zf=0)
cmovo=conditional move - overflow (of=1)
cmovp=conditional move - parity/parity even (pf=1)
cmovpe=conditional move - parity even/parity (pf=1)
cmovpo=conditional move - parity odd/not parity (pf=0)
cmovs=conditional move - sign (sf=1)
cmovz=conditional move - zero/equal (zf=0)
cmovz=conditional move - zero/equal (zf=1)
cmp=compare two operands
cmppd=compare packed double-fp values
cmpps=compare packed single-fp values