/src/capstonev5/MCInstrDesc.c
Line | Count | Source (jump to first uncovered line) |
1 | | /* Capstone Disassembly Engine */ |
2 | | /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */ |
3 | | |
4 | | #include "MCInstrDesc.h" |
5 | | |
6 | | /// isPredicate - Set if this is one of the operands that made up of |
7 | | /// the predicate operand that controls an isPredicable() instruction. |
8 | | bool MCOperandInfo_isPredicate(const MCOperandInfo *m) |
9 | 1.42M | { |
10 | 1.42M | return m->Flags & (1 << MCOI_Predicate); |
11 | 1.42M | } |
12 | | |
13 | | /// isOptionalDef - Set if this operand is a optional def. |
14 | | /// |
15 | | bool MCOperandInfo_isOptionalDef(const MCOperandInfo *m) |
16 | 240k | { |
17 | 240k | return m->Flags & (1 << MCOI_OptionalDef); |
18 | 240k | } |
19 | | |
20 | | /// Checks if operand is tied to another one. |
21 | | bool MCOperandInfo_isTiedToOp(const MCOperandInfo *m) |
22 | 0 | { |
23 | 0 | if (m->Constraints & (1 << MCOI_TIED_TO)) |
24 | 0 | return true; |
25 | 0 | return false; |
26 | 0 | } |
27 | | |
28 | | /// Returns the value of the specified operand constraint if |
29 | | /// it is present. Returns -1 if it is not present. |
30 | | int MCOperandInfo_getOperandConstraint(const MCInstrDesc *InstrDesc, |
31 | | unsigned OpNum, |
32 | | MCOI_OperandConstraint Constraint) |
33 | 0 | { |
34 | 0 | const MCOperandInfo OpInfo = InstrDesc->OpInfo[OpNum]; |
35 | 0 | if (OpNum < InstrDesc->NumOperands && |
36 | 0 | (OpInfo.Constraints & (1 << Constraint))) { |
37 | 0 | unsigned ValuePos = 4 + Constraint * 4; |
38 | 0 | return (OpInfo.Constraints >> ValuePos) & 0xf; |
39 | 0 | } |
40 | 0 | return -1; |
41 | 0 | } |