struct insn_group { struct insn_type *type; int offset; int count; char opcode[2];
};
struct insn_format { char *format; int type;
};
struct gen_opcode { struct insn *insn; int nr; struct insn_group *group; int nr_groups;
};
/* * Table of instruction format types. Each opcode is defined with at * least one byte (two nibbles), three nibbles, or two bytes (four * nibbles). * The byte member of each instruction format type entry defines * within which byte of an instruction the third (and fourth) nibble * of an opcode can be found. The mask member is the and-mask that * needs to be applied on this byte in order to get the third (and * fourth) nibble of the opcode. * The format array defines all instruction formats (as defined in the * Principles of Operation) which have the same position of the opcode * nibbles. * A special case are instruction formats with 1-byte opcodes. In this * case the byte member always is zero, so that the mask is applied on * the (only) byte that contains the opcode.
*/ staticstruct insn_type insn_type_table[] = {
{
.byte = 0,
.mask = 0xff,
.format = (char *[]) { "MII", "RR", "RS", "RSI", "RX", "SI", "SMI", "SS",
NULL,
},
},
{
.byte = 1,
.mask = 0x0f,
.format = (char *[]) { "RI", "RIL", "SSF",
NULL,
},
},
{
.byte = 1,
.mask = 0xff,
.format = (char *[]) { "E", "IE", "RRE", "RRF", "RRR", "S", "SIL", "SSE",
NULL,
},
},
{
.byte = 5,
.mask = 0xff,
.format = (char *[]) { "RIE", "RIS", "RRS", "RSE", "RSL", "RSY", "RXE", "RXF", "RXY", "SIY", "VRI", "VRR", "VRS", "VRV", "VRX", "VSI",
NULL,
},
},
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.