Rizin
unix-like reverse engineering framework and cli tools
analysis_spc700.c File Reference
#include <string.h>
#include <rz_types.h>
#include <rz_lib.h>
#include <rz_asm.h>
#include <rz_analysis.h>
#include "../../asm/arch/spc700/spc700dis.c"

Go to the source code of this file.

Functions

static int op (RzAnalysis *analysis, RzAnalysisOp *rz_op, ut64 addr, const ut8 *buf, int len, RzAnalysisOpMask mask)
 
static char * get_reg_profile (RzAnalysis *analysis)
 

Variables

RzAnalysisPlugin rz_analysis_plugin_spc700
 
RZ_API RzLibStruct rizin_plugin
 

Function Documentation

◆ get_reg_profile()

static char* get_reg_profile ( RzAnalysis analysis)
static

Definition at line 20 of file analysis_spc700.c.

20  {
21  char *p =
22  "=PC pc\n"
23  "=SP sp\n"
24  "=A0 a\n"
25  "=A1 x\n"
26  "=A2 y\n"
27  "gpr a .8 0 0\n"
28  "gpr x .8 1 0\n"
29  "gpr y .8 2 0\n"
30  "gpr flags .8 3 0\n"
31  "gpr C .1 .24 0\n"
32  "gpr Z .1 .25 0\n"
33  "gpr I .1 .26 0\n"
34  "gpr H .1 .27 0\n"
35  "gpr B .1 .28 0\n"
36  "gpr P .1 .29 0\n"
37  "gpr V .1 .30 0\n"
38  "gpr N .1 .31 0\n"
39  "gpr sp .8 4 0\n"
40  "gpr pc .16 5 0\n";
41  return strdup(p);
42 }
void * p
Definition: libc.cpp:67
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")

References p, and strdup().

◆ op()

static int op ( RzAnalysis analysis,
RzAnalysisOp rz_op,
ut64  addr,
const ut8 buf,
int  len,
RzAnalysisOpMask  mask 
)
static

Definition at line 11 of file analysis_spc700.c.

11  {
12  // TODO: fill this with the actual info
13  size_t dlen = spc700_disas(NULL, 0, buf, len);
14  rz_op->size = dlen;
15  rz_op->addr = addr;
17  return rz_op->size;
18 }
size_t len
Definition: 6502dis.c:15
#define NULL
Definition: cris-opc.c:27
voidpf void * buf
Definition: ioapi.h:138
@ RZ_ANALYSIS_OP_TYPE_UNK
Definition: rz_analysis.h:388
static size_t spc700_disas(RzStrBuf *out, ut64 pc, const ut8 *buf, size_t bufsz)
Definition: spc700dis.c:36
static int addr
Definition: z80asm.c:58

References addr, rz_analysis_op_t::addr, len, NULL, RZ_ANALYSIS_OP_TYPE_UNK, rz_analysis_op_t::size, spc700_disas(), and rz_analysis_op_t::type.

Variable Documentation

◆ rizin_plugin

RZ_API RzLibStruct rizin_plugin
Initial value:
= {
}
RzAnalysisPlugin rz_analysis_plugin_spc700
@ RZ_LIB_TYPE_ANALYSIS
Definition: rz_lib.h:73
#define RZ_VERSION
Definition: rz_version.h:8
const char * version
Definition: rz_analysis.h:1239

Definition at line 55 of file analysis_spc700.c.

◆ rz_analysis_plugin_spc700

RzAnalysisPlugin rz_analysis_plugin_spc700
Initial value:
= {
.name = "spc700",
.desc = "spc700, snes' sound-chip",
.arch = "spc700",
.license = "LGPL3",
.bits = 16,
.op = &op,
.get_reg_profile = &get_reg_profile,
}
static char * get_reg_profile(RzAnalysis *analysis)
static int op(RzAnalysis *analysis, RzAnalysisOp *rz_op, ut64 addr, const ut8 *buf, int len, RzAnalysisOpMask mask)

Definition at line 44 of file analysis_spc700.c.