MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / CSINV

Function CSINV

arch/arm64/disassembler/decode2.c:3196–3217  ·  view source on GitHub ↗

csinv.xml */

Source from the content-addressed store, hash-verified

3194
3195/* csinv.xml */
3196int CSINV(context *ctx, Instruction *instr)
3197{
3198 int rc = DECODE_STATUS_UNMATCHED;
3199 /* class iclass_general */
3200 /* sf=x|op=1|S=0|11010100|Rm=xxxxx|cond=xxxx|op2[1]=0|o2=0|Rn=xxxxx|Rd=xxxxx */
3201 if((INSWORD & 0x7FE00C00)==0x5A800000) {
3202 decode_fields32(ENC_CSINV_32_CONDSEL, ctx, instr);
3203 ctx->d = UINT(ctx->Rd);
3204 ctx->n = UINT(ctx->Rn);
3205 ctx->m = UINT(ctx->Rm);
3206 ctx->datasize = (ctx->sf==1) ? 0x40 : 0x20;
3207 ctx->condition = ctx->cond;
3208 ctx->else_inv = (ctx->op==1);
3209 ctx->else_inc = (ctx->o2==1);
3210 /* regular aliases */
3211 if(ctx->Rm!=0x1f && (ctx->cond&14)!=14 && ctx->Rn!=0x1f && ctx->Rn==ctx->Rm) return CINV_CSINV(ctx, instr);
3212 if(ctx->Rm==0x1f && (ctx->cond&14)!=14 && ctx->Rn==0x1f) return CSETM_CSINV(ctx, instr);
3213 if(ctx->sf==0) OK(ENC_CSINV_32_CONDSEL);
3214 if(ctx->sf==1) OK(ENC_CSINV_64_CONDSEL);
3215 }
3216 return rc;
3217}
3218
3219/* csneg.xml */
3220int CSNEG(context *ctx, Instruction *instr)

Callers 1

decode_iclass_condselFunction · 0.85

Calls 3

decode_fields32Function · 0.85
CINV_CSINVFunction · 0.85
CSETM_CSINVFunction · 0.85

Tested by

no test coverage detected