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

Function CASB

arch/arm64/disassembler/decode2.c:1875–1899  ·  view source on GitHub ↗

casb.xml */

Source from the content-addressed store, hash-verified

1873
1874/* casb.xml */
1875int CASB(context *ctx, Instruction *instr)
1876{
1877 int rc = DECODE_STATUS_UNMATCHED;
1878 /* class iclass_base_register */
1879 /* size=00|0010001|L=x|1|Rs=xxxxx|o0=x|Rt2=11111|Rn=xxxxx|Rt=xxxxx */
1880 if((INSWORD & 0xFFA07C00)==0x8A07C00) {
1881 decode_fields32(ENC_CASAB_C32_COMSWAP, ctx, instr);
1882 if(!HaveAtomicExt()) {
1883 UNDEFINED;
1884 }
1885 ctx->n = UINT(ctx->Rn);
1886 ctx->t = UINT(ctx->Rt);
1887 ctx->s = UINT(ctx->Rs);
1888 ctx->datasize = (8) << (UINT(ctx->size));
1889 ctx->regsize = (ctx->datasize==0x40) ? 0x40 : 0x20;
1890 ctx->ldacctype = (ctx->L==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
1891 ctx->stacctype = (ctx->o0==1) ? AccType_ORDEREDATOMICRW : AccType_ATOMICRW;
1892 ctx->tag_checked = ctx->n!=0x1f;
1893 if(ctx->L==1 && ctx->o0==0) OK(ENC_CASAB_C32_COMSWAP);
1894 if(ctx->L==1 && ctx->o0==1) OK(ENC_CASALB_C32_COMSWAP);
1895 if(ctx->L==0 && ctx->o0==0) OK(ENC_CASB_C32_COMSWAP);
1896 if(ctx->L==0 && ctx->o0==1) OK(ENC_CASLB_C32_COMSWAP);
1897 }
1898 return rc;
1899}
1900
1901/* cash.xml */
1902int CASH(context *ctx, Instruction *instr)

Callers 1

decode_iclass_comswapFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected