mirror of
https://github.com/ctm/syn68k.git
synced 2024-11-25 07:32:17 +00:00
41 lines
1.1 KiB
C
41 lines
1.1 KiB
C
#ifndef _defopcode_h_
|
|
#define _defopcode_h_
|
|
|
|
#include "list.h"
|
|
#include "hash.h"
|
|
|
|
#define MAX_OPCODE_WORDS 16
|
|
#define MAX_VARIANTS 64
|
|
|
|
typedef struct _CCVariant {
|
|
unsigned cc_may_set :5;
|
|
unsigned cc_may_not_set :5;
|
|
unsigned cc_needed :5;
|
|
unsigned cc_to_known_value :5;
|
|
unsigned cc_known_values :5;
|
|
char *bits_to_expand;
|
|
List *code;
|
|
const char *native_code_info;
|
|
struct _CCVariant *next;
|
|
} CCVariant;
|
|
|
|
typedef struct {
|
|
const char *name;
|
|
int cpu;
|
|
List *amode;
|
|
List *misc_flags;
|
|
char opcode_bits[16 * MAX_OPCODE_WORDS + 1];/* Concat'd 16-bit patterns. */
|
|
CCVariant *cc_variant; /* Linked list of CC variants. */
|
|
BOOL ends_block;
|
|
BOOL next_block_dynamic;
|
|
BOOL dont_postincdec_unexpanded;
|
|
int operand_words_to_skip;
|
|
} ParsedOpcodeInfo;
|
|
|
|
extern void generate_opcode (ParsedOpcodeInfo *info, SymbolTable *sym);
|
|
extern void begin_generating_code (void);
|
|
extern void done_generating_code (void);
|
|
extern int synthetic_opcode_size (const OpcodeMappingInfo *map);
|
|
|
|
#endif /* Not _defopcode_h_ */
|