mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.5 KiB
60 lines
1.5 KiB
/*
|
|
decode.h
|
|
|
|
Define all data types and functions supported by the Intel
|
|
instruction decoder.
|
|
*/
|
|
|
|
/*
|
|
static char SccsID[]="@(#)decode.h 1.5 08/25/94 Copyright Insignia Solutions Ltd.";
|
|
*/
|
|
|
|
#ifndef _DECODE_H_
|
|
#define _DECODE_H_
|
|
|
|
typedef struct
|
|
{
|
|
UTINY arg_type; /* Decoded operand type. */
|
|
USHORT identifier; /* Identifier within a specific type */
|
|
UTINY sub_id; /* Sub-identifier */
|
|
UTINY addressability; /* How the operand is addressed */
|
|
ULONG arg_values[2]; /* Specific values for operand. */
|
|
} DECODED_ARG;
|
|
|
|
typedef struct
|
|
{
|
|
UTINY operand_size; /* Operand size for inst. */
|
|
UTINY address_size; /* Address size for inst. */
|
|
UTINY prefix_sz; /* Nr. of prefix bytes (maybe 0). */
|
|
UTINY inst_sz; /* Nr. bytes in inst. (includes prefix bytes) */
|
|
USHORT inst_id; /* Decoded instruction identifier. */
|
|
DECODED_ARG args[3]; /* Three operands arg1, arg2, arg3 are */
|
|
/* allowed. */
|
|
} DECODED_INST;
|
|
|
|
/*
|
|
The allowable types of address size.
|
|
*/
|
|
#define ADDR_16 (UTINY)0
|
|
#define ADDR_32 (UTINY)1
|
|
|
|
/*
|
|
The allowable types of operand size.
|
|
*/
|
|
#define OP_16 (UTINY)0
|
|
#define OP_32 (UTINY)1
|
|
|
|
|
|
#ifdef ANSI
|
|
typedef IS32 (*read_byte_proc) (LIN_ADDR);
|
|
#else
|
|
typedef IS32 (*read_byte_proc) ();
|
|
#endif
|
|
|
|
extern void decode IPT4(
|
|
LIN_ADDR, p,
|
|
DECODED_INST *, d_inst,
|
|
SIZE_SPECIFIER, default_size,
|
|
read_byte_proc, func
|
|
);
|
|
#endif /* _DECODE_H_ */
|