CHDK_DE Vorschauversion
Trunk Rev. 6014
|
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <ctype.h>
#include <sys/stat.h>
#include "stubs_load.h"
#include "firmware_load.h"
#include "chdk_dasm.h"
gehe zum Quellcode dieser Datei
Datenstrukturen | |
struct | lnode |
struct | llist |
Makrodefinitionen | |
#define | Sbit (1<<20) /* set condition codes (data processing) */ |
#define | Lbit (1<<20) /* load, not store (data transfer) */ |
#define | Wbit (1<<21) /* writeback (data transfer) */ |
#define | Bbit (1<<22) /* single byte (data transfer, SWP) */ |
#define | Ubit (1<<23) /* up, not down (data transfer) */ |
#define | Pbit (1<<24) /* pre-, not post-, indexed (data transfer) */ |
#define | Ibit (1<<25) /* non-immediate (data transfer) */ |
#define | SPSRbit (1<<22) /* SPSR, not CPSR (MRS, MSR) */ |
#define | RD(x) ((x)<<12) /* destination register */ |
#define | RN(x) ((x)<<16) /* operand/base register */ |
#define | CP(x) ((x)<<8) /* coprocessor number */ |
#define | RDbits RD(15) |
#define | RNbits RN(15) |
#define | CPbits CP(15) |
#define | RD_is(x) ((instr&RDbits)==RD(x)) |
#define | RN_is(x) ((instr&RNbits)==RN(x)) |
#define | CP_is(x) ((instr&CPbits)==CP(x)) |
#define | BitsDiffer(a, b) ((instr^(instr>>(b-a)))&(1<<a)) |
Aufzählungen | |
enum | eTargetType { target_None, target_Data, target_FloatS, target_FloatD, target_FloatE, target_FloatP, target_Code, target_Unknown } |
Funktionen | |
declstruct (Instruction) | |
defstruct (Instruction) | |
struct llist * | new_list () |
void | free_list (struct llist *lst) |
struct lnode * | new_node (t_address address, t_value data) |
struct lnode * | l_search (struct llist *ls, t_address address) |
int | l_insert (struct llist *ls, t_address address, t_value data) |
void | l_remove (struct llist *ls, t_address addr) |
static void | set_patch_old_values (t_address w, char *nm) |
void | swiname (t_value, char *, size_t) |
static char * | append (char *op, const char *ip) |
static char * | print_ascii_str (firmware *fw, char *op, t_value w) |
static char * | xhex8 (firmware *fw, char *op, t_value w) |
static char * | ahex8 (firmware *fw, char *op, t_value w) |
static char * | yhex8 (firmware *fw, char *op, t_value w) |
static char * | sub_hex8 (firmware *fw, char *op, t_value w) |
static char * | sub_ahex8 (firmware *fw, char *op, t_value w) |
static char * | reg (char *op, char c, t_value n) |
static char * | num (char *op, t_value w, t_value decmax) |
pInstruction | instr_disassemble (firmware *fw, t_value instr, t_address addr, pDisOptions opts) |
void | disassemble1 (firmware *fw, t_address start, t_value length) |
void | disassemble (firmware *fw, FILE *outfile, t_address start, t_value length) |
t_address | find_end (firmware *fw, t_address start) |
void | swiname (__attribute__((unused)) t_value w, __attribute__((unused)) char *s, __attribute__((unused)) size_t sz) |
Variablen | |
char * | patch_func_name |
t_address | patch_new_val |
t_address | patch_old_val |
char * | patch_old_func_name |
int | patch_ref_address [20] |
char | patch_ref_name [20][256] |
int | save_patch_ref |
char * | patch_comment |
static char * | reg_names [16] |
sDisOptions | options |
struct llist * | dcd_list |
struct llist * | branch_list |
t_address | addr |
t_address | last_used_addr |
#define Bbit (1<<22) /* single byte (data transfer, SWP) */ |
Definiert in Zeile 106 der Datei chdk_dasm.c.
#define BitsDiffer | ( | a, | |
b | |||
) | ((instr^(instr>>(b-a)))&(1<<a)) |
Definiert in Zeile 128 der Datei chdk_dasm.c.
Definiert in Zeile 117 der Datei chdk_dasm.c.
#define CPbits CP(15) |
Definiert in Zeile 120 der Datei chdk_dasm.c.
#define Ibit (1<<25) /* non-immediate (data transfer) */ |
Definiert in Zeile 109 der Datei chdk_dasm.c.
#define Lbit (1<<20) /* load, not store (data transfer) */ |
Definiert in Zeile 104 der Datei chdk_dasm.c.
#define Pbit (1<<24) /* pre-, not post-, indexed (data transfer) */ |
Definiert in Zeile 108 der Datei chdk_dasm.c.
Definiert in Zeile 115 der Datei chdk_dasm.c.
#define RDbits RD(15) |
Definiert in Zeile 118 der Datei chdk_dasm.c.
Definiert in Zeile 116 der Datei chdk_dasm.c.
#define RNbits RN(15) |
Definiert in Zeile 119 der Datei chdk_dasm.c.
#define Sbit (1<<20) /* set condition codes (data processing) */ |
Definiert in Zeile 103 der Datei chdk_dasm.c.
#define SPSRbit (1<<22) /* SPSR, not CPSR (MRS, MSR) */ |
Definiert in Zeile 111 der Datei chdk_dasm.c.
#define Ubit (1<<23) /* up, not down (data transfer) */ |
Definiert in Zeile 107 der Datei chdk_dasm.c.
#define Wbit (1<<21) /* writeback (data transfer) */ |
Definiert in Zeile 105 der Datei chdk_dasm.c.
enum eTargetType |
Aufzählungswerte | |
---|---|
target_None | |
target_Data | |
target_FloatS | |
target_FloatD | |
target_FloatE | |
target_FloatP | |
target_Code | |
target_Unknown |
Definiert in Zeile 58 der Datei chdk_dasm.c.
Definiert in Zeile 363 der Datei chdk_dasm.c.
|
static |
Definiert in Zeile 279 der Datei chdk_dasm.c.
declstruct | ( | Instruction | ) |
defstruct | ( | Instruction | ) |
Definiert in Zeile 69 der Datei chdk_dasm.c.
Definiert in Zeile 1328 der Datei chdk_dasm.c.
Definiert in Zeile 1283 der Datei chdk_dasm.c.
Definiert in Zeile 1430 der Datei chdk_dasm.c.
void free_list | ( | struct llist * | lst) |
Definiert in Zeile 567 der Datei chdk_dasm.c.
Definiert in Zeile 233 der Datei chdk_dasm.c.
struct llist* new_list | ( | ) |
Definiert in Zeile 184 der Datei chdk_dasm.c.
Definiert in Zeile 485 der Datei chdk_dasm.c.
Definiert in Zeile 285 der Datei chdk_dasm.c.
|
static |
|
static |
Definiert in Zeile 268 der Datei chdk_dasm.c.
Definiert in Zeile 459 der Datei chdk_dasm.c.
Definiert in Zeile 390 der Datei chdk_dasm.c.
void swiname | ( | __attribute__((unused)) t_value | w, |
__attribute__((unused)) char * | s, | ||
__attribute__((unused)) size_t | sz | ||
) |
Definiert in Zeile 1464 der Datei chdk_dasm.c.
Definiert in Zeile 376 der Datei chdk_dasm.c.
t_address addr |
Definiert in Zeile 1281 der Datei chdk_dasm.c.
struct llist* branch_list |
Definiert in Zeile 262 der Datei chdk_dasm.c.
struct llist* dcd_list |
Definiert in Zeile 261 der Datei chdk_dasm.c.
t_address last_used_addr |
Definiert in Zeile 1281 der Datei chdk_dasm.c.
sDisOptions options |
Definiert in Zeile 96 der Datei chdk_dasm.c.
char* patch_comment |
Definiert in Zeile 90 der Datei chdk_dasm.c.
char* patch_func_name |
Definiert in Zeile 81 der Datei chdk_dasm.c.
t_address patch_new_val |
Definiert in Zeile 84 der Datei chdk_dasm.c.
char* patch_old_func_name |
Definiert in Zeile 86 der Datei chdk_dasm.c.
t_address patch_old_val |
Definiert in Zeile 85 der Datei chdk_dasm.c.
int patch_ref_address[20] |
Definiert in Zeile 87 der Datei chdk_dasm.c.
char patch_ref_name[20][256] |
Definiert in Zeile 88 der Datei chdk_dasm.c.
|
static |
Definiert in Zeile 92 der Datei chdk_dasm.c.
int save_patch_ref |
Definiert in Zeile 89 der Datei chdk_dasm.c.