mirror of
https://github.com/rizinorg/rizin
synced 2026-08-22 20:26:16 -04:00
Enhance milstd1750 analysis (#6557)
This commit is contained in:
parent
a3c844eb15
commit
cd1ad98598
5 changed files with 1525 additions and 480 deletions
|
|
@ -37,43 +37,43 @@ typedef struct {
|
|||
} MilStd1750XioCommand;
|
||||
|
||||
static const MilStd1750XioCommand milstd1750_xio_commands[] = {
|
||||
{ 0x2000, "SMK" },
|
||||
{ 0x2001, "CLIR" },
|
||||
{ 0x2002, "ENBL" },
|
||||
{ 0x2003, "DSBL" },
|
||||
{ 0x2004, "RPI" },
|
||||
{ 0x2005, "SPI" },
|
||||
{ 0x200E, "WSW" },
|
||||
{ 0xA000, "RMK" },
|
||||
{ 0xA004, "RPIR" },
|
||||
{ 0xA00E, "RSW" },
|
||||
{ 0xA00F, "RCFR" },
|
||||
{ 0x2008, "OD" },
|
||||
{ 0x200A, "RNS" },
|
||||
{ 0x4000, "CO" },
|
||||
{ 0x4001, "CLC" },
|
||||
{ 0x4003, "MPEN" },
|
||||
{ 0x4004, "ESUR" },
|
||||
{ 0x4005, "DSUR" },
|
||||
{ 0x4006, "DMAE" },
|
||||
{ 0x4007, "DMAD" },
|
||||
{ 0x4008, "TAS" },
|
||||
{ 0x4009, "TAH" },
|
||||
{ 0x400A, "OTA" },
|
||||
{ 0x400B, "GO" },
|
||||
{ 0x400C, "TBS" },
|
||||
{ 0x400D, "TBH" },
|
||||
{ 0x400E, "OTB" },
|
||||
{ 0xA001, "RIC1" },
|
||||
{ 0xA002, "RIC2" },
|
||||
{ 0xA008, "RDOR" },
|
||||
{ 0xA009, "RDI" },
|
||||
{ 0xA00B, "TPIO" },
|
||||
{ 0xA00D, "RMFS" },
|
||||
{ 0xC000, "CI" },
|
||||
{ 0xC001, "RCS" },
|
||||
{ 0xC00A, "ITA" },
|
||||
{ 0xC00E, "ITB" },
|
||||
{ MIL_XIO_SMK, "SMK" },
|
||||
{ MIL_XIO_CLIR, "CLIR" },
|
||||
{ MIL_XIO_ENBL, "ENBL" },
|
||||
{ MIL_XIO_DSBL, "DSBL" },
|
||||
{ MIL_XIO_RPI, "RPI" },
|
||||
{ MIL_XIO_SPI, "SPI" },
|
||||
{ MIL_XIO_WSW, "WSW" },
|
||||
{ MIL_XIO_RMK, "RMK" },
|
||||
{ MIL_XIO_RPIR, "RPIR" },
|
||||
{ MIL_XIO_RSW, "RSW" },
|
||||
{ MIL_XIO_RCFR, "RCFR" },
|
||||
{ MIL_XIO_OD, "OD" },
|
||||
{ MIL_XIO_RNS, "RNS" },
|
||||
{ MIL_XIO_CO, "CO" },
|
||||
{ MIL_XIO_CLC, "CLC" },
|
||||
{ MIL_XIO_MPEN, "MPEN" },
|
||||
{ MIL_XIO_ESUR, "ESUR" },
|
||||
{ MIL_XIO_DSUR, "DSUR" },
|
||||
{ MIL_XIO_DMAE, "DMAE" },
|
||||
{ MIL_XIO_DMAD, "DMAD" },
|
||||
{ MIL_XIO_TAS, "TAS" },
|
||||
{ MIL_XIO_TAH, "TAH" },
|
||||
{ MIL_XIO_OTA, "OTA" },
|
||||
{ MIL_XIO_GO, "GO" },
|
||||
{ MIL_XIO_TBS, "TBS" },
|
||||
{ MIL_XIO_TBH, "TBH" },
|
||||
{ MIL_XIO_OTB, "OTB" },
|
||||
{ MIL_XIO_RIC1, "RIC1" },
|
||||
{ MIL_XIO_RIC2, "RIC2" },
|
||||
{ MIL_XIO_RDOR, "RDOR" },
|
||||
{ MIL_XIO_RDI, "RDI" },
|
||||
{ MIL_XIO_TPIO, "TPIO" },
|
||||
{ MIL_XIO_RMFS, "RMFS" },
|
||||
{ MIL_XIO_CI, "CI" },
|
||||
{ MIL_XIO_RCS, "RCS" },
|
||||
{ MIL_XIO_ITA, "ITA" },
|
||||
{ MIL_XIO_ITB, "ITB" },
|
||||
};
|
||||
|
||||
static char *format_xio_command(ut16 cmd) {
|
||||
|
|
@ -158,215 +158,215 @@ static char *format_xio_command(ut16 cmd) {
|
|||
*/
|
||||
// clang-format off
|
||||
static const MilStd1750LongInstruction milstd1750_inst_tab[] = {
|
||||
{ 0x4040, "ABX", MIL_FMT_BX, },
|
||||
{ 0x40E0, "ANDX", MIL_FMT_BX, },
|
||||
{ 0xA000, "A", MIL_FMT_MEM, },
|
||||
{ 0xA400, "ABS", MIL_FMT_R, },
|
||||
{ 0x4A01, "AIM", MIL_FMT_IM_OCX, },
|
||||
{ 0xA200, "AISP", MIL_FMT_IS, },
|
||||
{ 0xE200, "AND", MIL_FMT_MEM, },
|
||||
{ 0x3400, "ANDB", MIL_FMT_B, },
|
||||
{ 0x4A07, "ANDM", MIL_FMT_IM_OCX, },
|
||||
{ 0xE300, "ANDR", MIL_FMT_R, },
|
||||
{ 0xA100, "AR", MIL_FMT_R, },
|
||||
{ 0x1000, "AB", MIL_FMT_B, },
|
||||
{ 0x7700, "BEX", MIL_FMT_S, },
|
||||
{ 0x7500, "BEZ", MIL_FMT_ICR, },
|
||||
{ 0x7B00, "BGE", MIL_FMT_ICR, },
|
||||
{ 0x7900, "BGT", MIL_FMT_ICR, },
|
||||
{ 0x4F00, "BIF", MIL_FMT_S, },
|
||||
{ 0x7800, "BLE", MIL_FMT_ICR, },
|
||||
{ 0x7600, "BLT", MIL_FMT_ICR, },
|
||||
{ 0x7A00, "BNZ", MIL_FMT_ICR, },
|
||||
{ 0xFFFF, "BPT", MIL_FMT_NONE, },
|
||||
{ 0x7400, "BR", MIL_FMT_ICR, },
|
||||
{ 0xF000, "C", MIL_FMT_MEM, },
|
||||
{ 0x3800, "CB", MIL_FMT_B, },
|
||||
{ 0xF400, "CBL", MIL_FMT_MEM, },
|
||||
{ 0x40C0, "CBX", MIL_FMT_BX, },
|
||||
{ 0xF100, "CR", MIL_FMT_R, },
|
||||
{ 0xF200, "CISP", MIL_FMT_IS, },
|
||||
{ 0xF300, "CISN", MIL_FMT_IS, },
|
||||
{ 0x4A0A, "CIM", MIL_FMT_IM_OCX, },
|
||||
{ 0xD700, "DDR", MIL_FMT_R, },
|
||||
{ 0xD600, "DD", MIL_FMT_MEM, },
|
||||
{ 0xD400, "D", MIL_FMT_MEM, },
|
||||
{ 0xA600, "DA", MIL_FMT_MEM, },
|
||||
{ 0xA500, "DABS", MIL_FMT_R, },
|
||||
{ 0xA700, "DAR", MIL_FMT_R, },
|
||||
{ 0x1C00, "DB", MIL_FMT_B, },
|
||||
{ 0xF600, "DC", MIL_FMT_MEM, },
|
||||
{ 0xF700, "DCR", MIL_FMT_R, },
|
||||
{ 0xB300, "DECM", MIL_FMT_IM_1_16, },
|
||||
{ 0x4A05, "DIM", MIL_FMT_IM_OCX, },
|
||||
{ 0xD300, "DISN", MIL_FMT_IS, },
|
||||
{ 0xD200, "DISP", MIL_FMT_IS, },
|
||||
{ 0x8600, "DL", MIL_FMT_MEM, },
|
||||
{ 0x0400, "DLB", MIL_FMT_B, },
|
||||
{ 0x4010, "DLBX", MIL_FMT_BX, },
|
||||
{ 0xDF00, "DLE", MIL_FMT_MEM, },
|
||||
{ 0x8800, "DLI", MIL_FMT_MEM, },
|
||||
{ 0x8700, "DLR", MIL_FMT_R, },
|
||||
{ 0xC600, "DM", MIL_FMT_MEM, },
|
||||
{ 0xC700, "DMR", MIL_FMT_R, },
|
||||
{ 0xB500, "DNEG", MIL_FMT_R, },
|
||||
{ 0xD500, "DR", MIL_FMT_R, },
|
||||
{ 0xB600, "DS", MIL_FMT_MEM, },
|
||||
{ 0x6E00, "DSAR", MIL_FMT_R, },
|
||||
{ 0x6F00, "DSCR", MIL_FMT_R, },
|
||||
{ 0x6500, "DSLL", MIL_FMT_R_IMM, },
|
||||
{ 0x6800, "DSLC", MIL_FMT_R_IMM, },
|
||||
{ 0x6D00, "DSLR", MIL_FMT_R, },
|
||||
{ 0x6700, "DSRA", MIL_FMT_R_IMM, },
|
||||
{ 0x6600, "DSRL", MIL_FMT_R_IMM, },
|
||||
{ 0xB700, "DSR", MIL_FMT_R, },
|
||||
{ 0x9600, "DST", MIL_FMT_MEM, },
|
||||
{ 0x0C00, "DSTB", MIL_FMT_B, },
|
||||
{ 0x9800, "DSTI", MIL_FMT_MEM, },
|
||||
{ 0xDD00, "DSTE", MIL_FMT_MEM, },
|
||||
{ 0x4030, "DSTX", MIL_FMT_BX, },
|
||||
{ 0xD000, "DV", MIL_FMT_MEM, },
|
||||
{ 0x4A06, "DVIM", MIL_FMT_IM_OCX, },
|
||||
{ 0xD100, "DVR", MIL_FMT_R, },
|
||||
{ 0x4070, "DBX", MIL_FMT_BX, },
|
||||
{ 0xEB00, "EFLT", MIL_FMT_R, },
|
||||
{ 0xEA00, "EFIX", MIL_FMT_R, },
|
||||
{ 0xFA00, "EFC", MIL_FMT_MEM, },
|
||||
{ 0xFB00, "EFCR", MIL_FMT_R, },
|
||||
{ 0xAA00, "EFA", MIL_FMT_MEM, },
|
||||
{ 0xAB00, "EFAR", MIL_FMT_R, },
|
||||
{ 0xDA00, "EFD", MIL_FMT_MEM, },
|
||||
{ 0xDB00, "EFDR", MIL_FMT_R, },
|
||||
{ 0x8A00, "EFL", MIL_FMT_MEM, },
|
||||
{ 0xCA00, "EFM", MIL_FMT_MEM, },
|
||||
{ 0xCB00, "EFMR", MIL_FMT_R, },
|
||||
{ 0xBA00, "EFS", MIL_FMT_MEM, },
|
||||
{ 0xBB00, "EFSR", MIL_FMT_R, },
|
||||
{ 0x9A00, "EFST", MIL_FMT_MEM, },
|
||||
{ 0xAC00, "FABS", MIL_FMT_R, },
|
||||
{ 0xA800, "FA", MIL_FMT_MEM, },
|
||||
{ 0x2000, "FAB", MIL_FMT_B, },
|
||||
{ 0x4080, "FABX", MIL_FMT_BX, },
|
||||
{ 0xA900, "FAR", MIL_FMT_R, },
|
||||
{ 0xF800, "FC", MIL_FMT_MEM, },
|
||||
{ 0x3C00, "FCB", MIL_FMT_B, },
|
||||
{ 0x40D0, "FCBX", MIL_FMT_BX, },
|
||||
{ 0xF900, "FCR", MIL_FMT_R, },
|
||||
{ 0xD800, "FD", MIL_FMT_MEM, },
|
||||
{ 0x2C00, "FDB", MIL_FMT_B, },
|
||||
{ 0x40B0, "FDBX", MIL_FMT_BX, },
|
||||
{ 0xD900, "FDR", MIL_FMT_R, },
|
||||
{ 0xE800, "FIX", MIL_FMT_R, },
|
||||
{ 0xE900, "FLT", MIL_FMT_R, },
|
||||
{ 0xC800, "FM", MIL_FMT_MEM, },
|
||||
{ 0x2800, "FMB", MIL_FMT_B, },
|
||||
{ 0x40A0, "FMBX", MIL_FMT_BX, },
|
||||
{ 0xC900, "FMR", MIL_FMT_R, },
|
||||
{ 0xBC00, "FNEG", MIL_FMT_R, },
|
||||
{ 0xB800, "FS", MIL_FMT_MEM, },
|
||||
{ 0x2400, "FSB", MIL_FMT_B, },
|
||||
{ 0x4090, "FSBX", MIL_FMT_BX, },
|
||||
{ 0xB900, "FSR", MIL_FMT_R, },
|
||||
{ 0xA300, "INCM", MIL_FMT_IM_1_16, },
|
||||
{ 0x7000, "JC", MIL_FMT_JUMP, },
|
||||
{ 0x7100, "JCI", MIL_FMT_JUMP, },
|
||||
{ 0x7200, "JS", MIL_FMT_MEM, },
|
||||
{ 0x8300, "LISN", MIL_FMT_IS, },
|
||||
{ 0x8000, "L", MIL_FMT_MEM, },
|
||||
{ 0x0000, "LB", MIL_FMT_B, },
|
||||
{ 0x4000, "LBX", MIL_FMT_BX, },
|
||||
{ 0xDE00, "LE", MIL_FMT_MEM, },
|
||||
{ 0x8400, "LI", MIL_FMT_MEM, },
|
||||
{ 0x8500, "LIM", MIL_FMT_MEM, },
|
||||
{ 0x8200, "LISP", MIL_FMT_IS, },
|
||||
{ 0x8C00, "LLB", MIL_FMT_MEM, },
|
||||
{ 0x8E00, "LLBI", MIL_FMT_MEM, },
|
||||
{ 0x8900, "LM", MIL_FMT_IM_0_15, },
|
||||
{ 0x8100, "LR", MIL_FMT_R, },
|
||||
{ 0x7C00, "LSTI", MIL_FMT_ADDR, },
|
||||
{ 0x7D00, "LST", MIL_FMT_ADDR, },
|
||||
{ 0x8B00, "LUB", MIL_FMT_MEM, },
|
||||
{ 0x8D00, "LUBI", MIL_FMT_MEM, },
|
||||
{ 0xC500, "MR", MIL_FMT_R, },
|
||||
{ 0xC400, "M", MIL_FMT_MEM, },
|
||||
{ 0x1800, "MB", MIL_FMT_B, },
|
||||
{ 0x4060, "MBX", MIL_FMT_BX, },
|
||||
{ 0xC300, "MISN", MIL_FMT_IS, },
|
||||
{ 0xC200, "MISP", MIL_FMT_IS, },
|
||||
{ 0x4A03, "MIM", MIL_FMT_IM_OCX, },
|
||||
{ 0x9300, "MOV", MIL_FMT_R, },
|
||||
{ 0xC000, "MS", MIL_FMT_MEM, },
|
||||
{ 0x4A04, "MSIM", MIL_FMT_IM_OCX, },
|
||||
{ 0xC100, "MSR", MIL_FMT_R, },
|
||||
{ 0xE600, "N", MIL_FMT_MEM, },
|
||||
{ 0xB400, "NEG", MIL_FMT_R, },
|
||||
{ 0x4A0B, "NIM", MIL_FMT_IM_OCX, },
|
||||
{ 0xFF00, "NOP", MIL_FMT_NONE, },
|
||||
{ 0xE700, "NR", MIL_FMT_R, },
|
||||
{ 0xE000, "OR", MIL_FMT_MEM, },
|
||||
{ 0x3000, "ORB", MIL_FMT_B, },
|
||||
{ 0x40F0, "ORBX", MIL_FMT_BX, },
|
||||
{ 0x4A08, "ORIM", MIL_FMT_IM_OCX, },
|
||||
{ 0xE100, "ORR", MIL_FMT_R, },
|
||||
{ 0x8F00, "POPM", MIL_FMT_R, },
|
||||
{ 0x9F00, "PSHM", MIL_FMT_R, },
|
||||
{ 0x5300, "RB", MIL_FMT_IM_0_15, },
|
||||
{ 0x5500, "RBI", MIL_FMT_IM_0_15, },
|
||||
{ 0x5400, "RBR", MIL_FMT_IMM_R, },
|
||||
{ 0x5C00, "RVBR", MIL_FMT_R, },
|
||||
{ 0x9E00, "SLBI", MIL_FMT_MEM, },
|
||||
{ 0x4050, "SBBX", MIL_FMT_BX, },
|
||||
{ 0x4020, "STBX", MIL_FMT_BX, },
|
||||
{ 0x6C00, "SCR", MIL_FMT_R, },
|
||||
{ 0x6B00, "SAR", MIL_FMT_R, },
|
||||
{ 0xB000, "S", MIL_FMT_MEM, },
|
||||
{ 0x5000, "SB", MIL_FMT_IM_0_15, },
|
||||
{ 0x1400, "SBB", MIL_FMT_B, },
|
||||
{ 0x5100, "SBR", MIL_FMT_IMM_R, },
|
||||
{ 0x5200, "SBI", MIL_FMT_IM_0_15, },
|
||||
{ 0x9500, "SFBS", MIL_FMT_R, },
|
||||
{ 0x4A02, "SIM", MIL_FMT_IM_OCX, },
|
||||
{ 0xB200, "SISP", MIL_FMT_IS, },
|
||||
{ 0x7E00, "SJS", MIL_FMT_MEM, },
|
||||
{ 0x6300, "SLC", MIL_FMT_R_IMM, },
|
||||
{ 0x6000, "SLL", MIL_FMT_R_IMM, },
|
||||
{ 0x6A00, "SLR", MIL_FMT_R, },
|
||||
{ 0x7300, "SOJ", MIL_FMT_MEM, },
|
||||
{ 0xB100, "SR", MIL_FMT_R, },
|
||||
{ 0x6200, "SRA", MIL_FMT_R_IMM, },
|
||||
{ 0x9700, "SRM", MIL_FMT_MEM, },
|
||||
{ 0x6100, "SRL", MIL_FMT_R_IMM, },
|
||||
{ 0x9000, "ST", MIL_FMT_MEM, },
|
||||
{ 0x9100, "STC", MIL_FMT_IM_0_15, },
|
||||
{ 0x9200, "STCI", MIL_FMT_IM_0_15, },
|
||||
{ 0x9400, "STI", MIL_FMT_MEM, },
|
||||
{ 0x0800, "STB", MIL_FMT_B, },
|
||||
{ 0x9C00, "STLB", MIL_FMT_MEM, },
|
||||
{ 0x9900, "STM", MIL_FMT_IM_0_15, },
|
||||
{ 0x9B00, "STUB", MIL_FMT_MEM, },
|
||||
{ 0x9D00, "SUBI", MIL_FMT_MEM, },
|
||||
{ 0x5A00, "SVBR", MIL_FMT_R, },
|
||||
{ 0x5600, "TB", MIL_FMT_IM_0_15, },
|
||||
{ 0xDC00, "STE", MIL_FMT_MEM, },
|
||||
{ 0x5700, "TBR", MIL_FMT_IMM_R, },
|
||||
{ 0x5E00, "TVBR", MIL_FMT_R, },
|
||||
{ 0x5800, "TBI", MIL_FMT_IM_0_15, },
|
||||
{ 0x5900, "TSB", MIL_FMT_IM_0_15, },
|
||||
{ 0xAE00, "UA", MIL_FMT_MEM, },
|
||||
{ 0xAD00, "UAR", MIL_FMT_R, },
|
||||
{ 0xFD00, "UC", MIL_FMT_MEM, },
|
||||
{ 0xF500, "UCIM", MIL_FMT_IM_OCX, },
|
||||
{ 0xFC00, "UCR", MIL_FMT_R, },
|
||||
{ 0x7F00, "URS", MIL_FMT_SR, },
|
||||
{ 0xBE00, "US", MIL_FMT_MEM, },
|
||||
{ 0xBD00, "USR", MIL_FMT_R, },
|
||||
{ 0x4900, "VIO", MIL_FMT_MEM, },
|
||||
{ 0xEC00, "XBR", MIL_FMT_R, },
|
||||
{ 0x4800, "XIO", MIL_FMT_XIO, },
|
||||
{ 0xE400, "XOR", MIL_FMT_MEM, },
|
||||
{ 0x4A09, "XORM", MIL_FMT_IM_OCX, },
|
||||
{ 0xE500, "XORR", MIL_FMT_R, },
|
||||
{ 0xED00, "XWR", MIL_FMT_R, },
|
||||
{ MIL_OP_ABX, "ABX", MIL_FMT_BX },
|
||||
{ MIL_OP_ANDX, "ANDX", MIL_FMT_BX },
|
||||
{ MIL_OP_A, "A", MIL_FMT_MEM },
|
||||
{ MIL_OP_ABS, "ABS", MIL_FMT_R },
|
||||
{ MIL_OP_AIM, "AIM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_AISP, "AISP", MIL_FMT_IS },
|
||||
{ MIL_OP_AND, "AND", MIL_FMT_MEM },
|
||||
{ MIL_OP_ANDB, "ANDB", MIL_FMT_B },
|
||||
{ MIL_OP_ANDM, "ANDM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_ANDR, "ANDR", MIL_FMT_R },
|
||||
{ MIL_OP_AR, "AR", MIL_FMT_R },
|
||||
{ MIL_OP_AB, "AB", MIL_FMT_B },
|
||||
{ MIL_OP_BEX, "BEX", MIL_FMT_S },
|
||||
{ MIL_OP_BEZ, "BEZ", MIL_FMT_ICR },
|
||||
{ MIL_OP_BGE, "BGE", MIL_FMT_ICR },
|
||||
{ MIL_OP_BGT, "BGT", MIL_FMT_ICR },
|
||||
{ MIL_OP_BIF, "BIF", MIL_FMT_S },
|
||||
{ MIL_OP_BLE, "BLE", MIL_FMT_ICR },
|
||||
{ MIL_OP_BLT, "BLT", MIL_FMT_ICR },
|
||||
{ MIL_OP_BNZ, "BNZ", MIL_FMT_ICR },
|
||||
{ MIL_OP_BPT, "BPT", MIL_FMT_NONE },
|
||||
{ MIL_OP_BR, "BR", MIL_FMT_ICR },
|
||||
{ MIL_OP_C, "C", MIL_FMT_MEM },
|
||||
{ MIL_OP_CB, "CB", MIL_FMT_B },
|
||||
{ MIL_OP_CBL, "CBL", MIL_FMT_MEM },
|
||||
{ MIL_OP_CBX, "CBX", MIL_FMT_BX },
|
||||
{ MIL_OP_CR, "CR", MIL_FMT_R },
|
||||
{ MIL_OP_CISP, "CISP", MIL_FMT_IS },
|
||||
{ MIL_OP_CISN, "CISN", MIL_FMT_IS },
|
||||
{ MIL_OP_CIM, "CIM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_DDR, "DDR", MIL_FMT_R },
|
||||
{ MIL_OP_DD, "DD", MIL_FMT_MEM },
|
||||
{ MIL_OP_D, "D", MIL_FMT_MEM },
|
||||
{ MIL_OP_DA, "DA", MIL_FMT_MEM },
|
||||
{ MIL_OP_DABS, "DABS", MIL_FMT_R },
|
||||
{ MIL_OP_DAR, "DAR", MIL_FMT_R },
|
||||
{ MIL_OP_DB, "DB", MIL_FMT_B },
|
||||
{ MIL_OP_DC, "DC", MIL_FMT_MEM },
|
||||
{ MIL_OP_DCR, "DCR", MIL_FMT_R },
|
||||
{ MIL_OP_DECM, "DECM", MIL_FMT_IM_1_16 },
|
||||
{ MIL_OP_DIM, "DIM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_DISN, "DISN", MIL_FMT_IS },
|
||||
{ MIL_OP_DISP, "DISP", MIL_FMT_IS },
|
||||
{ MIL_OP_DL, "DL", MIL_FMT_MEM },
|
||||
{ MIL_OP_DLB, "DLB", MIL_FMT_B },
|
||||
{ MIL_OP_DLBX, "DLBX", MIL_FMT_BX },
|
||||
{ MIL_OP_DLE, "DLE", MIL_FMT_MEM },
|
||||
{ MIL_OP_DLI, "DLI", MIL_FMT_MEM },
|
||||
{ MIL_OP_DLR, "DLR", MIL_FMT_R },
|
||||
{ MIL_OP_DM, "DM", MIL_FMT_MEM },
|
||||
{ MIL_OP_DMR, "DMR", MIL_FMT_R },
|
||||
{ MIL_OP_DNEG, "DNEG", MIL_FMT_R },
|
||||
{ MIL_OP_DR, "DR", MIL_FMT_R },
|
||||
{ MIL_OP_DS, "DS", MIL_FMT_MEM },
|
||||
{ MIL_OP_DSAR, "DSAR", MIL_FMT_R },
|
||||
{ MIL_OP_DSCR, "DSCR", MIL_FMT_R },
|
||||
{ MIL_OP_DSLL, "DSLL", MIL_FMT_R_IMM },
|
||||
{ MIL_OP_DSLC, "DSLC", MIL_FMT_R_IMM },
|
||||
{ MIL_OP_DSLR, "DSLR", MIL_FMT_R },
|
||||
{ MIL_OP_DSRA, "DSRA", MIL_FMT_R_IMM },
|
||||
{ MIL_OP_DSRL, "DSRL", MIL_FMT_R_IMM },
|
||||
{ MIL_OP_DSR, "DSR", MIL_FMT_R },
|
||||
{ MIL_OP_DST, "DST", MIL_FMT_MEM },
|
||||
{ MIL_OP_DSTB, "DSTB", MIL_FMT_B },
|
||||
{ MIL_OP_DSTI, "DSTI", MIL_FMT_MEM },
|
||||
{ MIL_OP_DSTE, "DSTE", MIL_FMT_MEM },
|
||||
{ MIL_OP_DSTX, "DSTX", MIL_FMT_BX },
|
||||
{ MIL_OP_DV, "DV", MIL_FMT_MEM },
|
||||
{ MIL_OP_DVIM, "DVIM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_DVR, "DVR", MIL_FMT_R },
|
||||
{ MIL_OP_DBX, "DBX", MIL_FMT_BX },
|
||||
{ MIL_OP_EFLT, "EFLT", MIL_FMT_R },
|
||||
{ MIL_OP_EFIX, "EFIX", MIL_FMT_R },
|
||||
{ MIL_OP_EFC, "EFC", MIL_FMT_MEM },
|
||||
{ MIL_OP_EFCR, "EFCR", MIL_FMT_R },
|
||||
{ MIL_OP_EFA, "EFA", MIL_FMT_MEM },
|
||||
{ MIL_OP_EFAR, "EFAR", MIL_FMT_R },
|
||||
{ MIL_OP_EFD, "EFD", MIL_FMT_MEM },
|
||||
{ MIL_OP_EFDR, "EFDR", MIL_FMT_R },
|
||||
{ MIL_OP_EFL, "EFL", MIL_FMT_MEM },
|
||||
{ MIL_OP_EFM, "EFM", MIL_FMT_MEM },
|
||||
{ MIL_OP_EFMR, "EFMR", MIL_FMT_R },
|
||||
{ MIL_OP_EFS, "EFS", MIL_FMT_MEM },
|
||||
{ MIL_OP_EFSR, "EFSR", MIL_FMT_R },
|
||||
{ MIL_OP_EFST, "EFST", MIL_FMT_MEM },
|
||||
{ MIL_OP_FABS, "FABS", MIL_FMT_R },
|
||||
{ MIL_OP_FA, "FA", MIL_FMT_MEM },
|
||||
{ MIL_OP_FAB, "FAB", MIL_FMT_B },
|
||||
{ MIL_OP_FABX, "FABX", MIL_FMT_BX },
|
||||
{ MIL_OP_FAR, "FAR", MIL_FMT_R },
|
||||
{ MIL_OP_FC, "FC", MIL_FMT_MEM },
|
||||
{ MIL_OP_FCB, "FCB", MIL_FMT_B },
|
||||
{ MIL_OP_FCBX, "FCBX", MIL_FMT_BX },
|
||||
{ MIL_OP_FCR, "FCR", MIL_FMT_R },
|
||||
{ MIL_OP_FD, "FD", MIL_FMT_MEM },
|
||||
{ MIL_OP_FDB, "FDB", MIL_FMT_B },
|
||||
{ MIL_OP_FDBX, "FDBX", MIL_FMT_BX },
|
||||
{ MIL_OP_FDR, "FDR", MIL_FMT_R },
|
||||
{ MIL_OP_FIX, "FIX", MIL_FMT_R },
|
||||
{ MIL_OP_FLT, "FLT", MIL_FMT_R },
|
||||
{ MIL_OP_FM, "FM", MIL_FMT_MEM },
|
||||
{ MIL_OP_FMB, "FMB", MIL_FMT_B },
|
||||
{ MIL_OP_FMBX, "FMBX", MIL_FMT_BX },
|
||||
{ MIL_OP_FMR, "FMR", MIL_FMT_R },
|
||||
{ MIL_OP_FNEG, "FNEG", MIL_FMT_R },
|
||||
{ MIL_OP_FS, "FS", MIL_FMT_MEM },
|
||||
{ MIL_OP_FSB, "FSB", MIL_FMT_B },
|
||||
{ MIL_OP_FSBX, "FSBX", MIL_FMT_BX },
|
||||
{ MIL_OP_FSR, "FSR", MIL_FMT_R },
|
||||
{ MIL_OP_INCM, "INCM", MIL_FMT_IM_1_16 },
|
||||
{ MIL_OP_JC, "JC", MIL_FMT_JUMP },
|
||||
{ MIL_OP_JCI, "JCI", MIL_FMT_JUMP },
|
||||
{ MIL_OP_JS, "JS", MIL_FMT_MEM },
|
||||
{ MIL_OP_LISN, "LISN", MIL_FMT_IS },
|
||||
{ MIL_OP_L, "L", MIL_FMT_MEM },
|
||||
{ MIL_OP_LB, "LB", MIL_FMT_B },
|
||||
{ MIL_OP_LBX, "LBX", MIL_FMT_BX },
|
||||
{ MIL_OP_LE, "LE", MIL_FMT_MEM },
|
||||
{ MIL_OP_LI, "LI", MIL_FMT_MEM },
|
||||
{ MIL_OP_LIM, "LIM", MIL_FMT_MEM },
|
||||
{ MIL_OP_LISP, "LISP", MIL_FMT_IS },
|
||||
{ MIL_OP_LLB, "LLB", MIL_FMT_MEM },
|
||||
{ MIL_OP_LLBI, "LLBI", MIL_FMT_MEM },
|
||||
{ MIL_OP_LM, "LM", MIL_FMT_IM_0_15 },
|
||||
{ MIL_OP_LR, "LR", MIL_FMT_R },
|
||||
{ MIL_OP_LSTI, "LSTI", MIL_FMT_ADDR },
|
||||
{ MIL_OP_LST, "LST", MIL_FMT_ADDR },
|
||||
{ MIL_OP_LUB, "LUB", MIL_FMT_MEM },
|
||||
{ MIL_OP_LUBI, "LUBI", MIL_FMT_MEM },
|
||||
{ MIL_OP_MR, "MR", MIL_FMT_R },
|
||||
{ MIL_OP_M, "M", MIL_FMT_MEM },
|
||||
{ MIL_OP_MB, "MB", MIL_FMT_B },
|
||||
{ MIL_OP_MBX, "MBX", MIL_FMT_BX },
|
||||
{ MIL_OP_MISN, "MISN", MIL_FMT_IS },
|
||||
{ MIL_OP_MISP, "MISP", MIL_FMT_IS },
|
||||
{ MIL_OP_MIM, "MIM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_MOV, "MOV", MIL_FMT_R },
|
||||
{ MIL_OP_MS, "MS", MIL_FMT_MEM },
|
||||
{ MIL_OP_MSIM, "MSIM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_MSR, "MSR", MIL_FMT_R },
|
||||
{ MIL_OP_N, "N", MIL_FMT_MEM },
|
||||
{ MIL_OP_NEG, "NEG", MIL_FMT_R },
|
||||
{ MIL_OP_NIM, "NIM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_NOP, "NOP", MIL_FMT_NONE },
|
||||
{ MIL_OP_NR, "NR", MIL_FMT_R },
|
||||
{ MIL_OP_OR, "OR", MIL_FMT_MEM },
|
||||
{ MIL_OP_ORB, "ORB", MIL_FMT_B },
|
||||
{ MIL_OP_ORBX, "ORBX", MIL_FMT_BX },
|
||||
{ MIL_OP_ORIM, "ORIM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_ORR, "ORR", MIL_FMT_R },
|
||||
{ MIL_OP_POPM, "POPM", MIL_FMT_R },
|
||||
{ MIL_OP_PSHM, "PSHM", MIL_FMT_R },
|
||||
{ MIL_OP_RB, "RB", MIL_FMT_IM_0_15 },
|
||||
{ MIL_OP_RBI, "RBI", MIL_FMT_IM_0_15 },
|
||||
{ MIL_OP_RBR, "RBR", MIL_FMT_IMM_R },
|
||||
{ MIL_OP_RVBR, "RVBR", MIL_FMT_R },
|
||||
{ MIL_OP_SLBI, "SLBI", MIL_FMT_MEM },
|
||||
{ MIL_OP_SBBX, "SBBX", MIL_FMT_BX },
|
||||
{ MIL_OP_STBX, "STBX", MIL_FMT_BX },
|
||||
{ MIL_OP_SCR, "SCR", MIL_FMT_R },
|
||||
{ MIL_OP_SAR, "SAR", MIL_FMT_R },
|
||||
{ MIL_OP_S, "S", MIL_FMT_MEM },
|
||||
{ MIL_OP_SB, "SB", MIL_FMT_IM_0_15 },
|
||||
{ MIL_OP_SBB, "SBB", MIL_FMT_B },
|
||||
{ MIL_OP_SBR, "SBR", MIL_FMT_IMM_R },
|
||||
{ MIL_OP_SBI, "SBI", MIL_FMT_IM_0_15 },
|
||||
{ MIL_OP_SFBS, "SFBS", MIL_FMT_R },
|
||||
{ MIL_OP_SIM, "SIM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_SISP, "SISP", MIL_FMT_IS },
|
||||
{ MIL_OP_SJS, "SJS", MIL_FMT_MEM },
|
||||
{ MIL_OP_SLC, "SLC", MIL_FMT_R_IMM },
|
||||
{ MIL_OP_SLL, "SLL", MIL_FMT_R_IMM },
|
||||
{ MIL_OP_SLR, "SLR", MIL_FMT_R },
|
||||
{ MIL_OP_SOJ, "SOJ", MIL_FMT_MEM },
|
||||
{ MIL_OP_SR, "SR", MIL_FMT_R },
|
||||
{ MIL_OP_SRA, "SRA", MIL_FMT_R_IMM },
|
||||
{ MIL_OP_SRM, "SRM", MIL_FMT_MEM },
|
||||
{ MIL_OP_SRL, "SRL", MIL_FMT_R_IMM },
|
||||
{ MIL_OP_ST, "ST", MIL_FMT_MEM },
|
||||
{ MIL_OP_STC, "STC", MIL_FMT_IM_0_15 },
|
||||
{ MIL_OP_STCI, "STCI", MIL_FMT_IM_0_15 },
|
||||
{ MIL_OP_STI, "STI", MIL_FMT_MEM },
|
||||
{ MIL_OP_STB, "STB", MIL_FMT_B },
|
||||
{ MIL_OP_STLB, "STLB", MIL_FMT_MEM },
|
||||
{ MIL_OP_STM, "STM", MIL_FMT_IM_0_15 },
|
||||
{ MIL_OP_STUB, "STUB", MIL_FMT_MEM },
|
||||
{ MIL_OP_SUBI, "SUBI", MIL_FMT_MEM },
|
||||
{ MIL_OP_SVBR, "SVBR", MIL_FMT_R },
|
||||
{ MIL_OP_TB, "TB", MIL_FMT_IM_0_15 },
|
||||
{ MIL_OP_STE, "STE", MIL_FMT_MEM },
|
||||
{ MIL_OP_TBR, "TBR", MIL_FMT_IMM_R },
|
||||
{ MIL_OP_TVBR, "TVBR", MIL_FMT_R },
|
||||
{ MIL_OP_TBI, "TBI", MIL_FMT_IM_0_15 },
|
||||
{ MIL_OP_TSB, "TSB", MIL_FMT_IM_0_15 },
|
||||
{ MIL_OP_UA, "UA", MIL_FMT_MEM },
|
||||
{ MIL_OP_UAR, "UAR", MIL_FMT_R },
|
||||
{ MIL_OP_UC, "UC", MIL_FMT_MEM },
|
||||
{ MIL_OP_UCIM, "UCIM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_UCR, "UCR", MIL_FMT_R },
|
||||
{ MIL_OP_URS, "URS", MIL_FMT_SR },
|
||||
{ MIL_OP_US, "US", MIL_FMT_MEM },
|
||||
{ MIL_OP_USR, "USR", MIL_FMT_R },
|
||||
{ MIL_OP_VIO, "VIO", MIL_FMT_MEM },
|
||||
{ MIL_OP_XBR, "XBR", MIL_FMT_R },
|
||||
{ MIL_OP_XIO, "XIO", MIL_FMT_XIO },
|
||||
{ MIL_OP_XOR, "XOR", MIL_FMT_MEM },
|
||||
{ MIL_OP_XORM, "XORM", MIL_FMT_IM_OCX },
|
||||
{ MIL_OP_XORR, "XORR", MIL_FMT_R },
|
||||
{ MIL_OP_XWR, "XWR", MIL_FMT_R },
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
|
|
@ -438,8 +438,7 @@ bool rz_milstd1750_decode(const ut8 *buf, int len, MilStd1750Instruction *out) {
|
|||
out->mnemonic = m->mnemonic;
|
||||
out->format = m->format;
|
||||
out->size = size;
|
||||
out->raw_w1 = w1;
|
||||
out->raw_w2 = w2;
|
||||
out->opcode = m->opcode;
|
||||
|
||||
switch (m->format) {
|
||||
case MIL_FMT_NONE:
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#define RZ_MILSTD1750_DISAS_H
|
||||
|
||||
#include <rz_asm.h>
|
||||
#include "opcodes.h"
|
||||
|
||||
typedef enum {
|
||||
MIL_FMT_NONE, // no operands
|
||||
|
|
@ -30,8 +31,7 @@ typedef struct {
|
|||
const char *mnemonic;
|
||||
MilStd1750Format format;
|
||||
ut8 size; // 2 or 4 (bytes)
|
||||
ut16 raw_w1;
|
||||
ut16 raw_w2;
|
||||
ut16 opcode; // canonical opcode (a MIL_OP_* pattern): operand bits cleared
|
||||
|
||||
// Decoded operand fields. Only those relevant to `format` are valid.
|
||||
ut8 ra; // R, SR, IS, XIO, MEM, IM_OCX
|
||||
|
|
|
|||
263
librz/arch/isa/milstd1750/opcodes.h
Normal file
263
librz/arch/isa/milstd1750/opcodes.h
Normal file
|
|
@ -0,0 +1,263 @@
|
|||
// SPDX-FileCopyrightText: 2026 godcodehunter
|
||||
// SPDX-License-Identifier: LGPL-3.0-only
|
||||
|
||||
#ifndef RZ_MILSTD1750_OPCODES_H
|
||||
#define RZ_MILSTD1750_OPCODES_H
|
||||
|
||||
// Full 16-bit opcode match patterns for MIL-STD-1750A instructions. The low
|
||||
// byte is zero for one-word opcodes; IM-format (0x4A0x) and the special words
|
||||
// (BPT/NOP) carry meaningful low bits. Shared between the disassembler table
|
||||
// and the analysis plugin, which compares against the instruction word with its
|
||||
// operand bits cleared.
|
||||
|
||||
#define MIL_OP_LB 0x0000
|
||||
#define MIL_OP_DLB 0x0400
|
||||
#define MIL_OP_STB 0x0800
|
||||
#define MIL_OP_DSTB 0x0C00
|
||||
#define MIL_OP_AB 0x1000
|
||||
#define MIL_OP_SBB 0x1400
|
||||
#define MIL_OP_MB 0x1800
|
||||
#define MIL_OP_DB 0x1C00
|
||||
#define MIL_OP_FAB 0x2000
|
||||
#define MIL_OP_FSB 0x2400
|
||||
#define MIL_OP_FMB 0x2800
|
||||
#define MIL_OP_FDB 0x2C00
|
||||
#define MIL_OP_ORB 0x3000
|
||||
#define MIL_OP_ANDB 0x3400
|
||||
#define MIL_OP_CB 0x3800
|
||||
#define MIL_OP_FCB 0x3C00
|
||||
#define MIL_OP_LBX 0x4000
|
||||
#define MIL_OP_DLBX 0x4010
|
||||
#define MIL_OP_STBX 0x4020
|
||||
#define MIL_OP_DSTX 0x4030
|
||||
#define MIL_OP_ABX 0x4040
|
||||
#define MIL_OP_SBBX 0x4050
|
||||
#define MIL_OP_MBX 0x4060
|
||||
#define MIL_OP_DBX 0x4070
|
||||
#define MIL_OP_FABX 0x4080
|
||||
#define MIL_OP_FSBX 0x4090
|
||||
#define MIL_OP_FMBX 0x40A0
|
||||
#define MIL_OP_FDBX 0x40B0
|
||||
#define MIL_OP_CBX 0x40C0
|
||||
#define MIL_OP_FCBX 0x40D0
|
||||
#define MIL_OP_ANDX 0x40E0
|
||||
#define MIL_OP_ORBX 0x40F0
|
||||
#define MIL_OP_XIO 0x4800
|
||||
#define MIL_OP_VIO 0x4900
|
||||
#define MIL_OP_AIM 0x4A01
|
||||
#define MIL_OP_SIM 0x4A02
|
||||
#define MIL_OP_MIM 0x4A03
|
||||
#define MIL_OP_MSIM 0x4A04
|
||||
#define MIL_OP_DIM 0x4A05
|
||||
#define MIL_OP_DVIM 0x4A06
|
||||
#define MIL_OP_ANDM 0x4A07
|
||||
#define MIL_OP_ORIM 0x4A08
|
||||
#define MIL_OP_XORM 0x4A09
|
||||
#define MIL_OP_CIM 0x4A0A
|
||||
#define MIL_OP_NIM 0x4A0B
|
||||
#define MIL_OP_BIF 0x4F00
|
||||
#define MIL_OP_SB 0x5000
|
||||
#define MIL_OP_SBR 0x5100
|
||||
#define MIL_OP_SBI 0x5200
|
||||
#define MIL_OP_RB 0x5300
|
||||
#define MIL_OP_RBR 0x5400
|
||||
#define MIL_OP_RBI 0x5500
|
||||
#define MIL_OP_TB 0x5600
|
||||
#define MIL_OP_TBR 0x5700
|
||||
#define MIL_OP_TBI 0x5800
|
||||
#define MIL_OP_TSB 0x5900
|
||||
#define MIL_OP_SVBR 0x5A00
|
||||
#define MIL_OP_RVBR 0x5C00
|
||||
#define MIL_OP_TVBR 0x5E00
|
||||
#define MIL_OP_SLL 0x6000
|
||||
#define MIL_OP_SRL 0x6100
|
||||
#define MIL_OP_SRA 0x6200
|
||||
#define MIL_OP_SLC 0x6300
|
||||
#define MIL_OP_DSLL 0x6500
|
||||
#define MIL_OP_DSRL 0x6600
|
||||
#define MIL_OP_DSRA 0x6700
|
||||
#define MIL_OP_DSLC 0x6800
|
||||
#define MIL_OP_SLR 0x6A00
|
||||
#define MIL_OP_SAR 0x6B00
|
||||
#define MIL_OP_SCR 0x6C00
|
||||
#define MIL_OP_DSLR 0x6D00
|
||||
#define MIL_OP_DSAR 0x6E00
|
||||
#define MIL_OP_DSCR 0x6F00
|
||||
#define MIL_OP_JC 0x7000
|
||||
#define MIL_OP_JCI 0x7100
|
||||
#define MIL_OP_JS 0x7200
|
||||
#define MIL_OP_SOJ 0x7300
|
||||
#define MIL_OP_BR 0x7400
|
||||
#define MIL_OP_BEZ 0x7500
|
||||
#define MIL_OP_BLT 0x7600
|
||||
#define MIL_OP_BEX 0x7700
|
||||
#define MIL_OP_BLE 0x7800
|
||||
#define MIL_OP_BGT 0x7900
|
||||
#define MIL_OP_BNZ 0x7A00
|
||||
#define MIL_OP_BGE 0x7B00
|
||||
#define MIL_OP_LSTI 0x7C00
|
||||
#define MIL_OP_LST 0x7D00
|
||||
#define MIL_OP_SJS 0x7E00
|
||||
#define MIL_OP_URS 0x7F00
|
||||
#define MIL_OP_L 0x8000
|
||||
#define MIL_OP_LR 0x8100
|
||||
#define MIL_OP_LISP 0x8200
|
||||
#define MIL_OP_LISN 0x8300
|
||||
#define MIL_OP_LI 0x8400
|
||||
#define MIL_OP_LIM 0x8500
|
||||
#define MIL_OP_DL 0x8600
|
||||
#define MIL_OP_DLR 0x8700
|
||||
#define MIL_OP_DLI 0x8800
|
||||
#define MIL_OP_LM 0x8900
|
||||
#define MIL_OP_EFL 0x8A00
|
||||
#define MIL_OP_LUB 0x8B00
|
||||
#define MIL_OP_LLB 0x8C00
|
||||
#define MIL_OP_LUBI 0x8D00
|
||||
#define MIL_OP_LLBI 0x8E00
|
||||
#define MIL_OP_POPM 0x8F00
|
||||
#define MIL_OP_ST 0x9000
|
||||
#define MIL_OP_STC 0x9100
|
||||
#define MIL_OP_STCI 0x9200
|
||||
#define MIL_OP_MOV 0x9300
|
||||
#define MIL_OP_STI 0x9400
|
||||
#define MIL_OP_SFBS 0x9500
|
||||
#define MIL_OP_DST 0x9600
|
||||
#define MIL_OP_SRM 0x9700
|
||||
#define MIL_OP_DSTI 0x9800
|
||||
#define MIL_OP_STM 0x9900
|
||||
#define MIL_OP_EFST 0x9A00
|
||||
#define MIL_OP_STUB 0x9B00
|
||||
#define MIL_OP_STLB 0x9C00
|
||||
#define MIL_OP_SUBI 0x9D00
|
||||
#define MIL_OP_SLBI 0x9E00
|
||||
#define MIL_OP_PSHM 0x9F00
|
||||
#define MIL_OP_A 0xA000
|
||||
#define MIL_OP_AR 0xA100
|
||||
#define MIL_OP_AISP 0xA200
|
||||
#define MIL_OP_INCM 0xA300
|
||||
#define MIL_OP_ABS 0xA400
|
||||
#define MIL_OP_DABS 0xA500
|
||||
#define MIL_OP_DA 0xA600
|
||||
#define MIL_OP_DAR 0xA700
|
||||
#define MIL_OP_FA 0xA800
|
||||
#define MIL_OP_FAR 0xA900
|
||||
#define MIL_OP_EFA 0xAA00
|
||||
#define MIL_OP_EFAR 0xAB00
|
||||
#define MIL_OP_FABS 0xAC00
|
||||
#define MIL_OP_UAR 0xAD00
|
||||
#define MIL_OP_UA 0xAE00
|
||||
#define MIL_OP_S 0xB000
|
||||
#define MIL_OP_SR 0xB100
|
||||
#define MIL_OP_SISP 0xB200
|
||||
#define MIL_OP_DECM 0xB300
|
||||
#define MIL_OP_NEG 0xB400
|
||||
#define MIL_OP_DNEG 0xB500
|
||||
#define MIL_OP_DS 0xB600
|
||||
#define MIL_OP_DSR 0xB700
|
||||
#define MIL_OP_FS 0xB800
|
||||
#define MIL_OP_FSR 0xB900
|
||||
#define MIL_OP_EFS 0xBA00
|
||||
#define MIL_OP_EFSR 0xBB00
|
||||
#define MIL_OP_FNEG 0xBC00
|
||||
#define MIL_OP_USR 0xBD00
|
||||
#define MIL_OP_US 0xBE00
|
||||
#define MIL_OP_MS 0xC000
|
||||
#define MIL_OP_MSR 0xC100
|
||||
#define MIL_OP_MISP 0xC200
|
||||
#define MIL_OP_MISN 0xC300
|
||||
#define MIL_OP_M 0xC400
|
||||
#define MIL_OP_MR 0xC500
|
||||
#define MIL_OP_DM 0xC600
|
||||
#define MIL_OP_DMR 0xC700
|
||||
#define MIL_OP_FM 0xC800
|
||||
#define MIL_OP_FMR 0xC900
|
||||
#define MIL_OP_EFM 0xCA00
|
||||
#define MIL_OP_EFMR 0xCB00
|
||||
#define MIL_OP_DV 0xD000
|
||||
#define MIL_OP_DVR 0xD100
|
||||
#define MIL_OP_DISP 0xD200
|
||||
#define MIL_OP_DISN 0xD300
|
||||
#define MIL_OP_D 0xD400
|
||||
#define MIL_OP_DR 0xD500
|
||||
#define MIL_OP_DD 0xD600
|
||||
#define MIL_OP_DDR 0xD700
|
||||
#define MIL_OP_FD 0xD800
|
||||
#define MIL_OP_FDR 0xD900
|
||||
#define MIL_OP_EFD 0xDA00
|
||||
#define MIL_OP_EFDR 0xDB00
|
||||
#define MIL_OP_STE 0xDC00
|
||||
#define MIL_OP_DSTE 0xDD00
|
||||
#define MIL_OP_LE 0xDE00
|
||||
#define MIL_OP_DLE 0xDF00
|
||||
#define MIL_OP_OR 0xE000
|
||||
#define MIL_OP_ORR 0xE100
|
||||
#define MIL_OP_AND 0xE200
|
||||
#define MIL_OP_ANDR 0xE300
|
||||
#define MIL_OP_XOR 0xE400
|
||||
#define MIL_OP_XORR 0xE500
|
||||
#define MIL_OP_N 0xE600
|
||||
#define MIL_OP_NR 0xE700
|
||||
#define MIL_OP_FIX 0xE800
|
||||
#define MIL_OP_FLT 0xE900
|
||||
#define MIL_OP_EFIX 0xEA00
|
||||
#define MIL_OP_EFLT 0xEB00
|
||||
#define MIL_OP_XBR 0xEC00
|
||||
#define MIL_OP_XWR 0xED00
|
||||
#define MIL_OP_C 0xF000
|
||||
#define MIL_OP_CR 0xF100
|
||||
#define MIL_OP_CISP 0xF200
|
||||
#define MIL_OP_CISN 0xF300
|
||||
#define MIL_OP_CBL 0xF400
|
||||
#define MIL_OP_UCIM 0xF500
|
||||
#define MIL_OP_DC 0xF600
|
||||
#define MIL_OP_DCR 0xF700
|
||||
#define MIL_OP_FC 0xF800
|
||||
#define MIL_OP_FCR 0xF900
|
||||
#define MIL_OP_EFC 0xFA00
|
||||
#define MIL_OP_EFCR 0xFB00
|
||||
#define MIL_OP_UCR 0xFC00
|
||||
#define MIL_OP_UC 0xFD00
|
||||
#define MIL_OP_NOP 0xFF00
|
||||
#define MIL_OP_BPT 0xFFFF
|
||||
|
||||
// XIO command words (second operand of XIO/VIO).
|
||||
|
||||
#define MIL_XIO_SMK 0x2000
|
||||
#define MIL_XIO_CLIR 0x2001
|
||||
#define MIL_XIO_ENBL 0x2002
|
||||
#define MIL_XIO_DSBL 0x2003
|
||||
#define MIL_XIO_RPI 0x2004
|
||||
#define MIL_XIO_SPI 0x2005
|
||||
#define MIL_XIO_OD 0x2008
|
||||
#define MIL_XIO_RNS 0x200A
|
||||
#define MIL_XIO_WSW 0x200E
|
||||
#define MIL_XIO_CO 0x4000
|
||||
#define MIL_XIO_CLC 0x4001
|
||||
#define MIL_XIO_MPEN 0x4003
|
||||
#define MIL_XIO_ESUR 0x4004
|
||||
#define MIL_XIO_DSUR 0x4005
|
||||
#define MIL_XIO_DMAE 0x4006
|
||||
#define MIL_XIO_DMAD 0x4007
|
||||
#define MIL_XIO_TAS 0x4008
|
||||
#define MIL_XIO_TAH 0x4009
|
||||
#define MIL_XIO_OTA 0x400A
|
||||
#define MIL_XIO_GO 0x400B
|
||||
#define MIL_XIO_TBS 0x400C
|
||||
#define MIL_XIO_TBH 0x400D
|
||||
#define MIL_XIO_OTB 0x400E
|
||||
#define MIL_XIO_RMK 0xA000
|
||||
#define MIL_XIO_RIC1 0xA001
|
||||
#define MIL_XIO_RIC2 0xA002
|
||||
#define MIL_XIO_RPIR 0xA004
|
||||
#define MIL_XIO_RDOR 0xA008
|
||||
#define MIL_XIO_RDI 0xA009
|
||||
#define MIL_XIO_TPIO 0xA00B
|
||||
#define MIL_XIO_RMFS 0xA00D
|
||||
#define MIL_XIO_RSW 0xA00E
|
||||
#define MIL_XIO_RCFR 0xA00F
|
||||
#define MIL_XIO_CI 0xC000
|
||||
#define MIL_XIO_RCS 0xC001
|
||||
#define MIL_XIO_ITA 0xC00A
|
||||
#define MIL_XIO_ITB 0xC00E
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -42,76 +42,122 @@ wx FF00 A112 A0301234 7410 FFFF
|
|||
pi 5
|
||||
s 0x100
|
||||
wx 7410
|
||||
ao~type,size,jump
|
||||
ao~^type,size,jump
|
||||
s 0x100
|
||||
wx 74F8
|
||||
ao~type,size,jump
|
||||
ao~^type,size,jump
|
||||
s 0x100
|
||||
wx 7505 7610 7820 7930 7A40 7B50
|
||||
ao 6~type,size,jump,fail
|
||||
ao 6~^type,size,jump,fail
|
||||
s 0x100
|
||||
wx 705F0800
|
||||
ao~type,size,jump,fail
|
||||
ao~^type,size,jump,fail
|
||||
s 0x100
|
||||
wx 72002000
|
||||
ao~type,size,jump
|
||||
ao~^type,size,jump
|
||||
s 0x100
|
||||
wx 7E000800
|
||||
ao~type,size,jump
|
||||
ao~^type,size,jump
|
||||
s 0x100
|
||||
wx 73001500
|
||||
ao~type,size,jump,fail
|
||||
ao~^type,size,jump,fail
|
||||
s 0x100
|
||||
wx 7F00
|
||||
ao~type,size
|
||||
ao~^type,size
|
||||
s 0x100
|
||||
wx FFFF FF00
|
||||
ao 2~type,size
|
||||
ao 2~^type,size
|
||||
s 0x100
|
||||
wx A112 B112 C512 D112
|
||||
ao 4~type,size
|
||||
ao 4~^type,size
|
||||
s 0x100
|
||||
wx E312 E134 E556 E712
|
||||
ao 4~type,size
|
||||
ao 4~^type,size
|
||||
s 0x100
|
||||
wx 6043 6121 6232
|
||||
ao 3~type,size
|
||||
ao 3~^type,size
|
||||
s 0x100
|
||||
wx 80501234 90301234 0005 0805
|
||||
ao 4~type,size
|
||||
ao 4~^type,size
|
||||
s 0x100
|
||||
wx 8F35 9F35
|
||||
ao 2~type,size
|
||||
ao 2~^type,size
|
||||
s 0x100
|
||||
wx 48302000 49101234
|
||||
ao 2~type,size
|
||||
ao 2~^type,size
|
||||
s 0x100
|
||||
wx 9312
|
||||
ao~type,size
|
||||
ao~^type,size
|
||||
s 0x100
|
||||
wx F0501234 F912
|
||||
ao 2~type,size
|
||||
ao 2~^type,size
|
||||
s 0x100
|
||||
wx 4A00
|
||||
ao~type,size
|
||||
ao~^type,size
|
||||
s 0x100
|
||||
wx 70000800 70700800 70500800
|
||||
ao 3~type,size,jump,fail
|
||||
ao 3~^type,size,jump,fail
|
||||
s 0x100
|
||||
wx 71000800 71F00800 71200800
|
||||
ao 3~type,size,fail
|
||||
ao 3~^type,size,fail
|
||||
s 0x100
|
||||
wx 7D001234 7C001234
|
||||
ao 2~type,size,family
|
||||
ao 2~^type,size,family
|
||||
s 0x100
|
||||
wx 7705
|
||||
ao~type,size
|
||||
ao~^type,size
|
||||
s 0x100
|
||||
wx 72002000 7E002000
|
||||
ao 2~type,size,jump,fail
|
||||
ao 2~^type,size,jump,fail
|
||||
s 0x100
|
||||
wx 48302000 49101234
|
||||
ao 2~family
|
||||
s 0x100;wx A112;ao~reg
|
||||
s 0x100;wx A0231234;ao~reg
|
||||
s 0x100;wx A0201234;ao~datatype
|
||||
s 0x100;wx A6201234;ao~datatype
|
||||
s 0x100;wx A8201234;ao~datatype
|
||||
s 0x100;wx AA201234;ao~datatype
|
||||
s 0x100;wx A234;ao~val
|
||||
s 0x100;wx 6043;ao~val
|
||||
s 0x100;wx 4A011234;ao~val
|
||||
s 0x100;wx 80201234;ao~direction
|
||||
s 0x100;wx 90201234;ao~direction
|
||||
s 0x100;wx 9F36;ao~direction
|
||||
s 0x100;wx 8F36;ao~direction
|
||||
s 0x100;wx 72002000;ao~direction
|
||||
s 0x100;wx 80200010 7F00;af
|
||||
s 0x200;wx 90400018 7F00;af
|
||||
s 0x300;wx 72000028 7F00;af
|
||||
axt @ 0x20
|
||||
axt @ 0x30
|
||||
axt @ 0x50
|
||||
s 0x100;wx 48302000;ao~^type,family
|
||||
s 0x100;wx 49101234;ao~^type,family
|
||||
s 0x100;wx 7D001234;ao~^type,family
|
||||
s 0x100;wx 7C001234;ao~^type,family
|
||||
s 0x100;wx 9F36;ao~^type,stackop,stackptr
|
||||
s 0x100;wx 8F36;ao~^type,stackop,stackptr
|
||||
s 0x100;wx 7E002000;ao~^type,stackop,stackptr
|
||||
s 0x100;wx 7F00;ao~^type,stackop,stackptr
|
||||
s 0x100;wx 9F52;ao~^type,stackop,stackptr
|
||||
s 0x100;wx F0201234;ao~^type,sign
|
||||
s 0x100;wx FD201234;ao~^type,sign
|
||||
s 0x100;wx F8201234;ao~^type,sign
|
||||
s 0x100;wx 6230;ao~^type,sign
|
||||
s 0x100;wx 6130;ao~^type,sign
|
||||
s 0x100;wx 70100800;ao~^type,cond
|
||||
s 0x100;wx 70800800;ao~^type,cond
|
||||
s 0x100;wx 70900800;ao~^type,cond
|
||||
s 0x100;wx 70700800;ao~^type,cond
|
||||
s 0x100;wx 71200800;ao~^type,cond
|
||||
s 0x100;wx 7501;ao~^type,cond
|
||||
s 0x100;wx 7610;ao~^type,cond
|
||||
s 0x100;wx 7820;ao~^type,cond
|
||||
s 0x100;wx 7930;ao~^type,cond
|
||||
s 0x100;wx 7A40;ao~^type,cond
|
||||
s 0x100;wx 7B50;ao~^type,cond
|
||||
s 0x100;wx 73001500;ao~^type,cond
|
||||
EOF
|
||||
EXPECT=<<EOF
|
||||
NOP()
|
||||
|
|
@ -291,8 +337,79 @@ jump: 0x00004000
|
|||
fail: 0x00000108
|
||||
family: io
|
||||
family: io
|
||||
reg: r1
|
||||
reg: r2
|
||||
ireg: r3
|
||||
datatype: int16
|
||||
datatype: int32
|
||||
datatype: float
|
||||
datatype: float
|
||||
val: 0x00000005
|
||||
val: 0x00000005
|
||||
val: 0x00001234
|
||||
direction: read
|
||||
direction: write
|
||||
direction: write
|
||||
direction: read
|
||||
direction: exec
|
||||
fcn.00000100 0x100 [DATA] L(r2, 0x0010)
|
||||
fcn.00000200 0x200 [DATA] ST(r4, 0x0018)
|
||||
fcn.00000300 0x300 [CALL] JS(r0, 0x0028)
|
||||
type: io
|
||||
family: io
|
||||
type: io
|
||||
family: io
|
||||
type: mjmp
|
||||
family: priv
|
||||
type: mjmp
|
||||
family: priv
|
||||
type: push
|
||||
stackop: inc
|
||||
stackptr: 8
|
||||
type: pop
|
||||
stackop: inc
|
||||
stackptr: -8
|
||||
type: call
|
||||
stackop: inc
|
||||
stackptr: 2
|
||||
type: ret
|
||||
stackop: inc
|
||||
stackptr: -2
|
||||
type: push
|
||||
stackop: inc
|
||||
stackptr: 28
|
||||
sign: true
|
||||
type: cmp
|
||||
sign: false
|
||||
type: cmp
|
||||
sign: false
|
||||
type: cmp
|
||||
sign: true
|
||||
type: shr
|
||||
sign: false
|
||||
type: shr
|
||||
type: cjmp
|
||||
cond: lt
|
||||
type: cjmp
|
||||
cond: hs
|
||||
type: cjmp
|
||||
cond: lt
|
||||
type: jmp
|
||||
type: cjmp
|
||||
cond: eq
|
||||
type: cjmp
|
||||
cond: eq
|
||||
type: cjmp
|
||||
cond: lt
|
||||
type: cjmp
|
||||
cond: le
|
||||
type: cjmp
|
||||
cond: gt
|
||||
type: cjmp
|
||||
cond: ne
|
||||
type: cjmp
|
||||
cond: ge
|
||||
type: cjmp
|
||||
cond: ne
|
||||
EOF
|
||||
RUN
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue