filename | src/cpu.h |
changeset | 14:fc481a638848 |
prev | 13:28aea89fb9c6 |
next | 30:89b30313d757 |
author | nkeynes |
date | Sat Dec 24 03:27:55 2005 +0000 (18 years ago) |
permissions | -rw-r--r-- |
last change | Rearrange directory structure to be a little neater remove tst & tst1 |
view | annotate | diff | log | raw |
2 #ifndef dream_disasm_H
3 #define dream_disasm_H 1
5 #include <stdlib.h>
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
11 /**
12 * Disassembly function pointer typedef.
13 *
14 * @param pc Address to disassemble
15 * @param buffer String buffer to write disassembly into
16 * @param buflen Maximum length of buffer
17 * @return next address to disassemble
18 */
19 typedef uint32_t (*disasm_func_t)(uint32_t pc, char *buffer, int buflen, char *opcode );
21 typedef int (*is_valid_page_t)(uint32_t pc);
23 #define REG_INT 0
24 #define REG_FLT 1
25 #define REG_SPECIAL 2
27 /**
28 * Structure that defines a single register in a CPU for display purposes.
29 */
30 typedef struct reg_desc_struct {
31 char *name;
32 int type;
33 void *value;
34 } reg_desc_t;
36 typedef struct cpu_desc_struct {
37 char *name; /* CPU Name */
38 disasm_func_t disasm_func; /* Disassembly function */
39 size_t instr_size; /* Size of instruction */
40 char *regs; /* Pointer to start of registers */
41 size_t regs_size; /* Size of register structure in bytes */
42 const struct reg_desc_struct *regs_info; /* Description of all registers */
43 uint32_t *pc; /* Pointer to PC register */
44 uint32_t *icount; /* Pointer to instruction counter */
45 /* Memory map? */
46 is_valid_page_t is_valid_page_func; /* Test for valid memory page */
47 } *cpu_desc_t;
49 #ifdef __cplusplus
50 }
51 #endif
53 #endif /* !dream_disasm_H */
.