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

Function LDEORB

arch/arm64/disassembler/decode2.c:13865–13915  ·  view source on GitHub ↗

ldeorb.xml */

Source from the content-addressed store, hash-verified

13863
13864/* ldeorb.xml */
13865int LDEORB(context *ctx, Instruction *instr)
13866{
13867 int rc = DECODE_STATUS_UNMATCHED;
13868 /* class iclass_general */
13869 /* size=00|111|V=0|00|A=x|R=x|1|Rs=xxxxx|o3=0|opc=010|00|Rn=xxxxx|Rt=xxxxx */
13870 if((INSWORD & 0xFF20FC00)==0x38202000) {
13871 decode_fields32(ENC_LDEORAB_32_MEMOP, ctx, instr);
13872 if(!HaveAtomicExt()) {
13873 UNDEFINED;
13874 }
13875 ctx->t = UINT(ctx->Rt);
13876 ctx->n = UINT(ctx->Rn);
13877 ctx->s = UINT(ctx->Rs);
13878 ctx->datasize = (8) << (UINT(ctx->size));
13879 ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20;
13880 ctx->ldacctype = (ctx->A==1 && ctx->Rt!=0x1f) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
13881 ctx->stacctype = (ctx->R==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
13882 if(!ctx->opc) {
13883 ctx->op = MemAtomicOp_ADD;
13884 }
13885 else if(ctx->opc==1) {
13886 ctx->op = MemAtomicOp_BIC;
13887 }
13888 else if(ctx->opc==2) {
13889 ctx->op = MemAtomicOp_EOR;
13890 }
13891 else if(ctx->opc==3) {
13892 ctx->op = MemAtomicOp_ORR;
13893 }
13894 else if(ctx->opc==4) {
13895 ctx->op = MemAtomicOp_SMAX;
13896 }
13897 else if(ctx->opc==5) {
13898 ctx->op = MemAtomicOp_SMIN;
13899 }
13900 else if(ctx->opc==6) {
13901 ctx->op = MemAtomicOp_UMAX;
13902 }
13903 else if(ctx->opc==7) {
13904 ctx->op = MemAtomicOp_UMIN;
13905 }
13906 ctx->tag_checked = ctx->n!=0x1f;
13907 /* regular aliases */
13908 if(ctx->A==0 && ctx->Rt==0x1f) return STEORB_LDEORB(ctx, instr);
13909 if(ctx->A==1 && ctx->R==0) OK(ENC_LDEORAB_32_MEMOP);
13910 if(ctx->A==1 && ctx->R==1) OK(ENC_LDEORALB_32_MEMOP);
13911 if(ctx->A==0 && ctx->R==0) OK(ENC_LDEORB_32_MEMOP);
13912 if(ctx->A==0 && ctx->R==1) OK(ENC_LDEORLB_32_MEMOP);
13913 }
13914 return rc;
13915}
13916
13917/* ldeorh.xml */
13918int LDEORH(context *ctx, Instruction *instr)

Callers 1

decode_iclass_memopFunction · 0.85

Calls 2

decode_fields32Function · 0.85
STEORB_LDEORBFunction · 0.85

Tested by

no test coverage detected