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

Function SUBS_addsub_ext

arch/arm64/disassembler/decode2.c:27079–27104  ·  view source on GitHub ↗

subs_addsub_ext.xml */

Source from the content-addressed store, hash-verified

27077
27078/* subs_addsub_ext.xml */
27079int SUBS_addsub_ext(context *ctx, Instruction *instr)
27080{
27081 int rc = DECODE_STATUS_UNMATCHED;
27082 /* class iclass_s */
27083 /* sf=x|op=1|S=1|01011|opt=00|1|Rm=xxxxx|option=xxx|imm3=xxx|Rn=xxxxx|Rd=xxxxx */
27084 if((INSWORD & 0x7FE00000)==0x6B200000) {
27085 decode_fields32(ENC_SUBS_32S_ADDSUB_EXT, ctx, instr);
27086 ctx->d = UINT(ctx->Rd);
27087 ctx->n = UINT(ctx->Rn);
27088 ctx->m = UINT(ctx->Rm);
27089 ctx->datasize = (ctx->sf==1) ? 0x40 : 0x20;
27090 ctx->sub_op = (ctx->op==1);
27091 ctx->setflags = (ctx->S==1);
27092 instr->setflags = (ctx->S==1) ? FLAGEFFECT_SETS : FLAGEFFECT_NONE;
27093 ctx->extend_type = DecodeRegExtend(ctx->option);
27094 ctx->shift = UINT(ctx->imm3);
27095 if(ctx->shift>4) {
27096 UNDEFINED;
27097 }
27098 /* regular aliases */
27099 if(ctx->Rd==0x1f) return CMP_SUBS_addsub_ext(ctx, instr);
27100 if(ctx->sf==0) OK(ENC_SUBS_32S_ADDSUB_EXT);
27101 if(ctx->sf==1) OK(ENC_SUBS_64S_ADDSUB_EXT);
27102 }
27103 return rc;
27104}
27105
27106/* subs_addsub_imm.xml */
27107int SUBS_addsub_imm(context *ctx, Instruction *instr)

Callers 1

decode_iclass_addsub_extFunction · 0.85

Calls 3

decode_fields32Function · 0.85
DecodeRegExtendFunction · 0.85
CMP_SUBS_addsub_extFunction · 0.85

Tested by

no test coverage detected