#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <stdarg.h>Classes | |
| struct | opcode_struct |
| struct | ea_info_struct |
| struct | body_struct |
| struct | replace_struct |
Macros | |
| #define | M68K_MAX_PATH 1024 |
| #define | M68K_MAX_DIR 1024 |
| #define | MAX_LINE_LENGTH 200 /* length of 1 line */ |
| #define | MAX_BODY_LENGTH 300 /* Number of lines in 1 function */ |
| #define | MAX_REPLACE_LENGTH 30 /* Max number of replace strings */ |
| #define | MAX_INSERT_LENGTH 5000 /* Max size of insert piece */ |
| #define | MAX_NAME_LENGTH 30 /* Max length of ophandler name */ |
| #define | MAX_SPEC_PROC_LENGTH 4 /* Max length of special processing str */ |
| #define | MAX_SPEC_EA_LENGTH 5 /* Max length of specified EA str */ |
| #define | EA_ALLOWED_LENGTH 11 /* Max length of ea allowed str */ |
| #define | MAX_OPCODE_INPUT_TABLE_LENGTH 1000 /* Max length of opcode handler tbl */ |
| #define | MAX_OPCODE_OUTPUT_TABLE_LENGTH 3000 /* Max length of opcode handler tbl */ |
| #define | FILENAME_INPUT "m68k_in.c" |
| #define | FILENAME_PROTOTYPE "m68kops.h" |
| #define | FILENAME_TABLE "m68kops.c" |
| #define | ID_INPUT_SEPARATOR "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" |
| #define | ID_BASE "M68KMAKE" |
| #define | ID_PROTOTYPE_HEADER ID_BASE "_PROTOTYPE_HEADER" |
| #define | ID_PROTOTYPE_FOOTER ID_BASE "_PROTOTYPE_FOOTER" |
| #define | ID_TABLE_HEADER ID_BASE "_TABLE_HEADER" |
| #define | ID_TABLE_FOOTER ID_BASE "_TABLE_FOOTER" |
| #define | ID_TABLE_BODY ID_BASE "_TABLE_BODY" |
| #define | ID_TABLE_START ID_BASE "_TABLE_START" |
| #define | ID_OPHANDLER_HEADER ID_BASE "_OPCODE_HANDLER_HEADER" |
| #define | ID_OPHANDLER_FOOTER ID_BASE "_OPCODE_HANDLER_FOOTER" |
| #define | ID_OPHANDLER_BODY ID_BASE "_OPCODE_HANDLER_BODY" |
| #define | ID_END ID_BASE "_END" |
| #define | ID_OPHANDLER_NAME ID_BASE "_OP" |
| #define | ID_OPHANDLER_EA_AY_8 ID_BASE "_GET_EA_AY_8" |
| #define | ID_OPHANDLER_EA_AY_16 ID_BASE "_GET_EA_AY_16" |
| #define | ID_OPHANDLER_EA_AY_32 ID_BASE "_GET_EA_AY_32" |
| #define | ID_OPHANDLER_OPER_AY_8 ID_BASE "_GET_OPER_AY_8" |
| #define | ID_OPHANDLER_OPER_AY_16 ID_BASE "_GET_OPER_AY_16" |
| #define | ID_OPHANDLER_OPER_AY_32 ID_BASE "_GET_OPER_AY_32" |
| #define | ID_OPHANDLER_CC ID_BASE "_CC" |
| #define | ID_OPHANDLER_NOT_CC ID_BASE "_NOT_CC" |
| #define | DECL_SPEC |
| #define | UNSPECIFIED "." |
| #define | UNSPECIFIED_CH '.' |
| #define | HAS_NO_EA_MODE(A) (strcmp(A, "..........") == 0) |
| #define | HAS_EA_AI(A) ((A)[0] == 'A') |
| #define | HAS_EA_PI(A) ((A)[1] == '+') |
| #define | HAS_EA_PD(A) ((A)[2] == '-') |
| #define | HAS_EA_DI(A) ((A)[3] == 'D') |
| #define | HAS_EA_IX(A) ((A)[4] == 'X') |
| #define | HAS_EA_AW(A) ((A)[5] == 'W') |
| #define | HAS_EA_AL(A) ((A)[6] == 'L') |
| #define | HAS_EA_PCDI(A) ((A)[7] == 'd') |
| #define | HAS_EA_PCIX(A) ((A)[8] == 'x') |
| #define | HAS_EA_I(A) ((A)[9] == 'I') |
Enumerations | |
| enum | { CPU_TYPE_000 = 0, CPU_TYPE_010, CPU_TYPE_020, CPU_TYPE_040, NUM_CPUS } |
| enum | { EA_MODE_NONE, EA_MODE_AI, EA_MODE_PI, EA_MODE_PI7, EA_MODE_PD, EA_MODE_PD7, EA_MODE_DI, EA_MODE_IX, EA_MODE_AW, EA_MODE_AL, EA_MODE_PCDI, EA_MODE_PCIX, EA_MODE_I } |
Functions | |
| void | error_exit (const char *fmt,...) |
| void | perror_exit (const char *fmt,...) |
| int | check_strsncpy (char *dst, char *src, int maxlength) |
| int | check_atoi (char *str, int *result) |
| int | skip_spaces (char *str) |
| int | num_bits (int value) |
| int | atoh (char *buff) |
| int | fgetline (char *buff, int nchars, FILE *file) |
| int | get_oper_cycles (opcode_struct *op, int ea_mode, int cpu_type) |
| opcode_struct * | find_opcode (char *name, int size, char *spec_proc, char *spec_ea) |
| opcode_struct * | find_illegal_opcode (void) |
| int | extract_opcode_info (char *src, char *name, int *size, char *spec_proc, char *spec_ea) |
| void | add_replace_string (replace_struct *replace, const char *search_str, const char *replace_str) |
| void | write_body (FILE *filep, body_struct *body, replace_struct *replace) |
| void | get_base_name (char *base_name, opcode_struct *op) |
| void | write_prototype (FILE *filep, char *base_name) |
| void | write_function_name (FILE *filep, char *base_name) |
| void | add_opcode_output_table_entry (opcode_struct *op, char *name) |
| static int DECL_SPEC | compare_nof_true_bits (const void *aptr, const void *bptr) |
| void | print_opcode_output_table (FILE *filep) |
| void | write_table_entry (FILE *filep, opcode_struct *op) |
| void | set_opcode_struct (opcode_struct *src, opcode_struct *dst, int ea_mode) |
| void | generate_opcode_handler (FILE *filep, body_struct *body, replace_struct *replace, opcode_struct *opinfo, int ea_mode) |
| void | generate_opcode_ea_variants (FILE *filep, body_struct *body, replace_struct *replace, opcode_struct *op) |
| void | generate_opcode_cc_variants (FILE *filep, body_struct *body, replace_struct *replace, opcode_struct *op_in, int offset) |
| void | process_opcode_handlers (FILE *filep) |
| void | populate_table (void) |
| void | read_insert (char *insert) |
| int | check_strcncpy (char *dst, char *src, char delim, int maxlength) |
| int | main (int argc, char **argv) |
Variables | |
| static const char * | g_version = "3.31" |
| char | g_input_filename [M68K_MAX_PATH] = FILENAME_INPUT |
| FILE * | g_input_file = NULL |
| FILE * | g_prototype_file = NULL |
| FILE * | g_table_file = NULL |
| int | g_num_functions = 0 |
| int | g_num_primitives = 0 |
| int | g_line_number = 1 |
| opcode_struct | g_opcode_input_table [MAX_OPCODE_INPUT_TABLE_LENGTH] |
| opcode_struct | g_opcode_output_table [MAX_OPCODE_OUTPUT_TABLE_LENGTH] |
| int | g_opcode_output_table_length = 0 |
| ea_info_struct | g_ea_info_table [13] |
| const char * | g_cc_table [16][2] |
| int | g_size_select_table [33] |
| int | g_ea_cycle_table [13][NUM_CPUS][3] |
| int | g_jmp_cycle_table [13] |
| int | g_jsr_cycle_table [13] |
| int | g_lea_cycle_table [13] |
| int | g_pea_cycle_table [13] |
| int | g_movem_cycle_table [13] |
| int | g_moves_cycle_table [13][3] |
| int | g_clr_cycle_table [13][3] |
| #define DECL_SPEC |
| #define FILENAME_INPUT "m68k_in.c" |
| #define FILENAME_PROTOTYPE "m68kops.h" |
| #define FILENAME_TABLE "m68kops.c" |
| #define HAS_EA_AI | ( | A | ) | ((A)[0] == 'A') |
| #define HAS_EA_AL | ( | A | ) | ((A)[6] == 'L') |
| #define HAS_EA_AW | ( | A | ) | ((A)[5] == 'W') |
| #define HAS_EA_DI | ( | A | ) | ((A)[3] == 'D') |
| #define HAS_EA_I | ( | A | ) | ((A)[9] == 'I') |
| #define HAS_EA_IX | ( | A | ) | ((A)[4] == 'X') |
| #define HAS_EA_PCDI | ( | A | ) | ((A)[7] == 'd') |
| #define HAS_EA_PCIX | ( | A | ) | ((A)[8] == 'x') |
| #define HAS_EA_PD | ( | A | ) | ((A)[2] == '-') |
| #define HAS_EA_PI | ( | A | ) | ((A)[1] == '+') |
| #define HAS_NO_EA_MODE | ( | A | ) | (strcmp(A, "..........") == 0) |
| #define ID_BASE "M68KMAKE" |
| #define ID_END ID_BASE "_END" |
| #define ID_INPUT_SEPARATOR "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" |
| #define ID_OPHANDLER_BODY ID_BASE "_OPCODE_HANDLER_BODY" |
| #define ID_OPHANDLER_CC ID_BASE "_CC" |
| #define ID_OPHANDLER_EA_AY_16 ID_BASE "_GET_EA_AY_16" |
| #define ID_OPHANDLER_EA_AY_32 ID_BASE "_GET_EA_AY_32" |
| #define ID_OPHANDLER_EA_AY_8 ID_BASE "_GET_EA_AY_8" |
| #define ID_OPHANDLER_FOOTER ID_BASE "_OPCODE_HANDLER_FOOTER" |
| #define ID_OPHANDLER_HEADER ID_BASE "_OPCODE_HANDLER_HEADER" |
| #define ID_OPHANDLER_NAME ID_BASE "_OP" |
| #define ID_OPHANDLER_NOT_CC ID_BASE "_NOT_CC" |
| #define ID_OPHANDLER_OPER_AY_16 ID_BASE "_GET_OPER_AY_16" |
| #define ID_OPHANDLER_OPER_AY_32 ID_BASE "_GET_OPER_AY_32" |
| #define ID_OPHANDLER_OPER_AY_8 ID_BASE "_GET_OPER_AY_8" |
| #define ID_PROTOTYPE_FOOTER ID_BASE "_PROTOTYPE_FOOTER" |
| #define ID_PROTOTYPE_HEADER ID_BASE "_PROTOTYPE_HEADER" |
| #define ID_TABLE_BODY ID_BASE "_TABLE_BODY" |
| #define ID_TABLE_FOOTER ID_BASE "_TABLE_FOOTER" |
| #define ID_TABLE_HEADER ID_BASE "_TABLE_HEADER" |
| #define ID_TABLE_START ID_BASE "_TABLE_START" |
| #define M68K_MAX_DIR 1024 |
| #define M68K_MAX_PATH 1024 |
| #define MAX_BODY_LENGTH 300 /* Number of lines in 1 function */ |
| #define MAX_INSERT_LENGTH 5000 /* Max size of insert piece */ |
| #define MAX_LINE_LENGTH 200 /* length of 1 line */ |
| #define MAX_OPCODE_INPUT_TABLE_LENGTH 1000 /* Max length of opcode handler tbl */ |
| #define MAX_OPCODE_OUTPUT_TABLE_LENGTH 3000 /* Max length of opcode handler tbl */ |
| #define MAX_REPLACE_LENGTH 30 /* Max number of replace strings */ |
| #define MAX_SPEC_EA_LENGTH 5 /* Max length of specified EA str */ |
| #define MAX_SPEC_PROC_LENGTH 4 /* Max length of special processing str */ |
| #define UNSPECIFIED "." |
| #define UNSPECIFIED_CH '.' |
| anonymous enum |
| void add_opcode_output_table_entry | ( | opcode_struct * | op, |
| char * | name | ||
| ) |
| void add_replace_string | ( | replace_struct * | replace, |
| const char * | search_str, | ||
| const char * | replace_str | ||
| ) |
| int atoh | ( | char * | buff | ) |
| int check_atoi | ( | char * | str, |
| int * | result | ||
| ) |
| int check_strcncpy | ( | char * | dst, |
| char * | src, | ||
| char | delim, | ||
| int | maxlength | ||
| ) |
| int check_strsncpy | ( | char * | dst, |
| char * | src, | ||
| int | maxlength | ||
| ) |
|
static |
| void error_exit | ( | const char * | fmt, |
| ... | |||
| ) |
| int extract_opcode_info | ( | char * | src, |
| char * | name, | ||
| int * | size, | ||
| char * | spec_proc, | ||
| char * | spec_ea | ||
| ) |
| int fgetline | ( | char * | buff, |
| int | nchars, | ||
| FILE * | file | ||
| ) |
| opcode_struct * find_illegal_opcode | ( | void | ) |
| opcode_struct * find_opcode | ( | char * | name, |
| int | size, | ||
| char * | spec_proc, | ||
| char * | spec_ea | ||
| ) |
| void generate_opcode_cc_variants | ( | FILE * | filep, |
| body_struct * | body, | ||
| replace_struct * | replace, | ||
| opcode_struct * | op_in, | ||
| int | offset | ||
| ) |
| void generate_opcode_ea_variants | ( | FILE * | filep, |
| body_struct * | body, | ||
| replace_struct * | replace, | ||
| opcode_struct * | op | ||
| ) |
| void generate_opcode_handler | ( | FILE * | filep, |
| body_struct * | body, | ||
| replace_struct * | replace, | ||
| opcode_struct * | opinfo, | ||
| int | ea_mode | ||
| ) |
| void get_base_name | ( | char * | base_name, |
| opcode_struct * | op | ||
| ) |
| int get_oper_cycles | ( | opcode_struct * | op, |
| int | ea_mode, | ||
| int | cpu_type | ||
| ) |
| int main | ( | int | argc, |
| char ** | argv | ||
| ) |
| int num_bits | ( | int | value | ) |
| void perror_exit | ( | const char * | fmt, |
| ... | |||
| ) |
| void populate_table | ( | void | ) |
| void print_opcode_output_table | ( | FILE * | filep | ) |
| void process_opcode_handlers | ( | FILE * | filep | ) |
| void read_insert | ( | char * | insert | ) |
| void set_opcode_struct | ( | opcode_struct * | src, |
| opcode_struct * | dst, | ||
| int | ea_mode | ||
| ) |
| int skip_spaces | ( | char * | str | ) |
| void write_body | ( | FILE * | filep, |
| body_struct * | body, | ||
| replace_struct * | replace | ||
| ) |
| void write_function_name | ( | FILE * | filep, |
| char * | base_name | ||
| ) |
| void write_prototype | ( | FILE * | filep, |
| char * | base_name | ||
| ) |
| void write_table_entry | ( | FILE * | filep, |
| opcode_struct * | op | ||
| ) |
| const char* g_cc_table[16][2] |
| int g_clr_cycle_table[13][3] |
| int g_ea_cycle_table[13][NUM_CPUS][3] |
| ea_info_struct g_ea_info_table[13] |
| FILE* g_input_file = NULL |
| char g_input_filename[M68K_MAX_PATH] = FILENAME_INPUT |
| int g_jmp_cycle_table[13] |
| int g_jsr_cycle_table[13] |
| int g_lea_cycle_table[13] |
| int g_line_number = 1 |
| int g_movem_cycle_table[13] |
| int g_moves_cycle_table[13][3] |
| int g_num_functions = 0 |
| int g_num_primitives = 0 |
| opcode_struct g_opcode_input_table[MAX_OPCODE_INPUT_TABLE_LENGTH] |
| opcode_struct g_opcode_output_table[MAX_OPCODE_OUTPUT_TABLE_LENGTH] |
| int g_opcode_output_table_length = 0 |
| int g_pea_cycle_table[13] |
| FILE* g_prototype_file = NULL |
| int g_size_select_table[33] |
| FILE* g_table_file = NULL |
|
static |
1.8.1.1