2014-03-23 00:35:45 +00:00
|
|
|
#ifndef CAPSTONE_SYSTEMZ_H
|
|
|
|
#define CAPSTONE_SYSTEMZ_H
|
|
|
|
|
|
|
|
/* Capstone Disassembly Engine */
|
2014-04-28 03:23:14 +00:00
|
|
|
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2014 */
|
2014-03-23 00:35:45 +00:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <stdint.h>
|
2014-05-15 13:51:02 +00:00
|
|
|
#include "platform.h"
|
2014-03-23 00:35:45 +00:00
|
|
|
|
|
|
|
#ifdef _MSC_VER
|
|
|
|
#pragma warning(disable:4201)
|
|
|
|
#endif
|
|
|
|
|
2014-03-23 01:15:50 +00:00
|
|
|
//> Enums corresponding to SystemZ condition codes
|
2014-03-23 00:35:45 +00:00
|
|
|
typedef enum sysz_cc {
|
|
|
|
SYSZ_CC_INVALID = 0, // invalid CC (default)
|
|
|
|
|
|
|
|
SYSZ_CC_O,
|
|
|
|
SYSZ_CC_H,
|
|
|
|
SYSZ_CC_NLE,
|
|
|
|
SYSZ_CC_L,
|
|
|
|
SYSZ_CC_NHE,
|
|
|
|
SYSZ_CC_LH,
|
|
|
|
SYSZ_CC_NE,
|
|
|
|
SYSZ_CC_E,
|
|
|
|
SYSZ_CC_NLH,
|
|
|
|
SYSZ_CC_HE,
|
|
|
|
SYSZ_CC_NL,
|
|
|
|
SYSZ_CC_LE,
|
|
|
|
SYSZ_CC_NH,
|
|
|
|
SYSZ_CC_NO,
|
|
|
|
} sysz_cc;
|
|
|
|
|
|
|
|
//> Operand type for instruction's operands
|
|
|
|
typedef enum sysz_op_type {
|
|
|
|
SYSZ_OP_INVALID = 0, // Uninitialized.
|
|
|
|
SYSZ_OP_REG, // Register operand.
|
2014-03-23 03:12:07 +00:00
|
|
|
SYSZ_OP_ACREG, // Access register operand.
|
2014-03-23 00:35:45 +00:00
|
|
|
SYSZ_OP_IMM, // Immediate operand.
|
|
|
|
SYSZ_OP_MEM, // Memory operand
|
|
|
|
} sysz_op_type;
|
|
|
|
|
|
|
|
// Instruction's operand referring to memory
|
|
|
|
// This is associated with SYSZ_OP_MEM operand type above
|
|
|
|
typedef struct sysz_op_mem {
|
|
|
|
uint8_t base; // base register
|
2014-03-24 09:26:57 +00:00
|
|
|
uint8_t index; // index register
|
|
|
|
uint64_t length; // BDLAddr operand
|
2014-03-23 00:35:45 +00:00
|
|
|
int64_t disp; // displacement/offset value
|
|
|
|
} sysz_op_mem;
|
|
|
|
|
|
|
|
// Instruction operand
|
|
|
|
typedef struct cs_sysz_op {
|
|
|
|
sysz_op_type type; // operand type
|
|
|
|
union {
|
|
|
|
unsigned int reg; // register value for REG operand
|
2014-03-23 01:15:50 +00:00
|
|
|
int64_t imm; // immediate value for IMM operand
|
2014-03-23 00:35:45 +00:00
|
|
|
sysz_op_mem mem; // base/disp value for MEM operand
|
|
|
|
};
|
|
|
|
} cs_sysz_op;
|
|
|
|
|
|
|
|
// Instruction structure
|
|
|
|
typedef struct cs_sysz {
|
|
|
|
sysz_cc cc; // Code condition
|
|
|
|
// Number of operands of this instruction,
|
|
|
|
// or 0 when instruction has no operand.
|
|
|
|
uint8_t op_count;
|
2014-03-24 09:26:57 +00:00
|
|
|
cs_sysz_op operands[6]; // operands for this instruction.
|
2014-03-23 00:35:45 +00:00
|
|
|
} cs_sysz;
|
|
|
|
|
|
|
|
//> SystemZ registers
|
|
|
|
typedef enum sysz_reg {
|
|
|
|
SYSZ_REG_INVALID = 0,
|
|
|
|
|
|
|
|
SYSZ_REG_0,
|
|
|
|
SYSZ_REG_1,
|
|
|
|
SYSZ_REG_2,
|
|
|
|
SYSZ_REG_3,
|
|
|
|
SYSZ_REG_4,
|
|
|
|
SYSZ_REG_5,
|
|
|
|
SYSZ_REG_6,
|
|
|
|
SYSZ_REG_7,
|
|
|
|
SYSZ_REG_8,
|
|
|
|
SYSZ_REG_9,
|
|
|
|
SYSZ_REG_10,
|
|
|
|
SYSZ_REG_11,
|
|
|
|
SYSZ_REG_12,
|
|
|
|
SYSZ_REG_13,
|
|
|
|
SYSZ_REG_14,
|
|
|
|
SYSZ_REG_15,
|
|
|
|
SYSZ_REG_CC,
|
|
|
|
SYSZ_REG_F0,
|
|
|
|
SYSZ_REG_F1,
|
|
|
|
SYSZ_REG_F2,
|
|
|
|
SYSZ_REG_F3,
|
|
|
|
SYSZ_REG_F4,
|
|
|
|
SYSZ_REG_F5,
|
|
|
|
SYSZ_REG_F6,
|
|
|
|
SYSZ_REG_F7,
|
|
|
|
SYSZ_REG_F8,
|
|
|
|
SYSZ_REG_F9,
|
|
|
|
SYSZ_REG_F10,
|
|
|
|
SYSZ_REG_F11,
|
|
|
|
SYSZ_REG_F12,
|
|
|
|
SYSZ_REG_F13,
|
|
|
|
SYSZ_REG_F14,
|
|
|
|
SYSZ_REG_F15,
|
|
|
|
|
|
|
|
SYSZ_REG_R0L,
|
|
|
|
|
|
|
|
SYSZ_REG_MAX,
|
|
|
|
} sysz_reg;
|
|
|
|
|
|
|
|
//> SystemZ instruction
|
|
|
|
typedef enum sysz_insn {
|
|
|
|
SYSZ_INS_INVALID = 0,
|
|
|
|
|
|
|
|
SYSZ_INS_A,
|
|
|
|
SYSZ_INS_ADB,
|
|
|
|
SYSZ_INS_ADBR,
|
|
|
|
SYSZ_INS_AEB,
|
|
|
|
SYSZ_INS_AEBR,
|
|
|
|
SYSZ_INS_AFI,
|
|
|
|
SYSZ_INS_AG,
|
|
|
|
SYSZ_INS_AGF,
|
|
|
|
SYSZ_INS_AGFI,
|
|
|
|
SYSZ_INS_AGFR,
|
|
|
|
SYSZ_INS_AGHI,
|
|
|
|
SYSZ_INS_AGHIK,
|
|
|
|
SYSZ_INS_AGR,
|
|
|
|
SYSZ_INS_AGRK,
|
|
|
|
SYSZ_INS_AGSI,
|
|
|
|
SYSZ_INS_AH,
|
|
|
|
SYSZ_INS_AHI,
|
|
|
|
SYSZ_INS_AHIK,
|
|
|
|
SYSZ_INS_AHY,
|
|
|
|
SYSZ_INS_AIH,
|
|
|
|
SYSZ_INS_AL,
|
|
|
|
SYSZ_INS_ALC,
|
|
|
|
SYSZ_INS_ALCG,
|
|
|
|
SYSZ_INS_ALCGR,
|
|
|
|
SYSZ_INS_ALCR,
|
|
|
|
SYSZ_INS_ALFI,
|
|
|
|
SYSZ_INS_ALG,
|
|
|
|
SYSZ_INS_ALGF,
|
|
|
|
SYSZ_INS_ALGFI,
|
|
|
|
SYSZ_INS_ALGFR,
|
|
|
|
SYSZ_INS_ALGHSIK,
|
|
|
|
SYSZ_INS_ALGR,
|
|
|
|
SYSZ_INS_ALGRK,
|
|
|
|
SYSZ_INS_ALHSIK,
|
|
|
|
SYSZ_INS_ALR,
|
|
|
|
SYSZ_INS_ALRK,
|
|
|
|
SYSZ_INS_ALY,
|
|
|
|
SYSZ_INS_AR,
|
|
|
|
SYSZ_INS_ARK,
|
|
|
|
SYSZ_INS_ASI,
|
|
|
|
SYSZ_INS_AXBR,
|
|
|
|
SYSZ_INS_AY,
|
|
|
|
SYSZ_INS_BCR,
|
|
|
|
SYSZ_INS_BRC,
|
|
|
|
SYSZ_INS_BRCL,
|
|
|
|
SYSZ_INS_CGIJ,
|
|
|
|
SYSZ_INS_CGRJ,
|
|
|
|
SYSZ_INS_CIJ,
|
|
|
|
SYSZ_INS_CLGIJ,
|
|
|
|
SYSZ_INS_CLGRJ,
|
|
|
|
SYSZ_INS_CLIJ,
|
|
|
|
SYSZ_INS_CLRJ,
|
|
|
|
SYSZ_INS_CRJ,
|
|
|
|
SYSZ_INS_BER,
|
|
|
|
SYSZ_INS_JE,
|
|
|
|
SYSZ_INS_JGE,
|
|
|
|
SYSZ_INS_LOCE,
|
|
|
|
SYSZ_INS_LOCGE,
|
|
|
|
SYSZ_INS_LOCGRE,
|
|
|
|
SYSZ_INS_LOCRE,
|
|
|
|
SYSZ_INS_STOCE,
|
|
|
|
SYSZ_INS_STOCGE,
|
|
|
|
SYSZ_INS_BHR,
|
|
|
|
SYSZ_INS_BHER,
|
|
|
|
SYSZ_INS_JHE,
|
|
|
|
SYSZ_INS_JGHE,
|
|
|
|
SYSZ_INS_LOCHE,
|
|
|
|
SYSZ_INS_LOCGHE,
|
|
|
|
SYSZ_INS_LOCGRHE,
|
|
|
|
SYSZ_INS_LOCRHE,
|
|
|
|
SYSZ_INS_STOCHE,
|
|
|
|
SYSZ_INS_STOCGHE,
|
|
|
|
SYSZ_INS_JH,
|
|
|
|
SYSZ_INS_JGH,
|
|
|
|
SYSZ_INS_LOCH,
|
|
|
|
SYSZ_INS_LOCGH,
|
|
|
|
SYSZ_INS_LOCGRH,
|
|
|
|
SYSZ_INS_LOCRH,
|
|
|
|
SYSZ_INS_STOCH,
|
|
|
|
SYSZ_INS_STOCGH,
|
|
|
|
SYSZ_INS_CGIJNLH,
|
|
|
|
SYSZ_INS_CGRJNLH,
|
|
|
|
SYSZ_INS_CIJNLH,
|
|
|
|
SYSZ_INS_CLGIJNLH,
|
|
|
|
SYSZ_INS_CLGRJNLH,
|
|
|
|
SYSZ_INS_CLIJNLH,
|
|
|
|
SYSZ_INS_CLRJNLH,
|
|
|
|
SYSZ_INS_CRJNLH,
|
|
|
|
SYSZ_INS_CGIJE,
|
|
|
|
SYSZ_INS_CGRJE,
|
|
|
|
SYSZ_INS_CIJE,
|
|
|
|
SYSZ_INS_CLGIJE,
|
|
|
|
SYSZ_INS_CLGRJE,
|
|
|
|
SYSZ_INS_CLIJE,
|
|
|
|
SYSZ_INS_CLRJE,
|
|
|
|
SYSZ_INS_CRJE,
|
|
|
|
SYSZ_INS_CGIJNLE,
|
|
|
|
SYSZ_INS_CGRJNLE,
|
|
|
|
SYSZ_INS_CIJNLE,
|
|
|
|
SYSZ_INS_CLGIJNLE,
|
|
|
|
SYSZ_INS_CLGRJNLE,
|
|
|
|
SYSZ_INS_CLIJNLE,
|
|
|
|
SYSZ_INS_CLRJNLE,
|
|
|
|
SYSZ_INS_CRJNLE,
|
|
|
|
SYSZ_INS_CGIJH,
|
|
|
|
SYSZ_INS_CGRJH,
|
|
|
|
SYSZ_INS_CIJH,
|
|
|
|
SYSZ_INS_CLGIJH,
|
|
|
|
SYSZ_INS_CLGRJH,
|
|
|
|
SYSZ_INS_CLIJH,
|
|
|
|
SYSZ_INS_CLRJH,
|
|
|
|
SYSZ_INS_CRJH,
|
|
|
|
SYSZ_INS_CGIJNL,
|
|
|
|
SYSZ_INS_CGRJNL,
|
|
|
|
SYSZ_INS_CIJNL,
|
|
|
|
SYSZ_INS_CLGIJNL,
|
|
|
|
SYSZ_INS_CLGRJNL,
|
|
|
|
SYSZ_INS_CLIJNL,
|
|
|
|
SYSZ_INS_CLRJNL,
|
|
|
|
SYSZ_INS_CRJNL,
|
|
|
|
SYSZ_INS_CGIJHE,
|
|
|
|
SYSZ_INS_CGRJHE,
|
|
|
|
SYSZ_INS_CIJHE,
|
|
|
|
SYSZ_INS_CLGIJHE,
|
|
|
|
SYSZ_INS_CLGRJHE,
|
|
|
|
SYSZ_INS_CLIJHE,
|
|
|
|
SYSZ_INS_CLRJHE,
|
|
|
|
SYSZ_INS_CRJHE,
|
|
|
|
SYSZ_INS_CGIJNHE,
|
|
|
|
SYSZ_INS_CGRJNHE,
|
|
|
|
SYSZ_INS_CIJNHE,
|
|
|
|
SYSZ_INS_CLGIJNHE,
|
|
|
|
SYSZ_INS_CLGRJNHE,
|
|
|
|
SYSZ_INS_CLIJNHE,
|
|
|
|
SYSZ_INS_CLRJNHE,
|
|
|
|
SYSZ_INS_CRJNHE,
|
|
|
|
SYSZ_INS_CGIJL,
|
|
|
|
SYSZ_INS_CGRJL,
|
|
|
|
SYSZ_INS_CIJL,
|
|
|
|
SYSZ_INS_CLGIJL,
|
|
|
|
SYSZ_INS_CLGRJL,
|
|
|
|
SYSZ_INS_CLIJL,
|
|
|
|
SYSZ_INS_CLRJL,
|
|
|
|
SYSZ_INS_CRJL,
|
|
|
|
SYSZ_INS_CGIJNH,
|
|
|
|
SYSZ_INS_CGRJNH,
|
|
|
|
SYSZ_INS_CIJNH,
|
|
|
|
SYSZ_INS_CLGIJNH,
|
|
|
|
SYSZ_INS_CLGRJNH,
|
|
|
|
SYSZ_INS_CLIJNH,
|
|
|
|
SYSZ_INS_CLRJNH,
|
|
|
|
SYSZ_INS_CRJNH,
|
|
|
|
SYSZ_INS_CGIJLE,
|
|
|
|
SYSZ_INS_CGRJLE,
|
|
|
|
SYSZ_INS_CIJLE,
|
|
|
|
SYSZ_INS_CLGIJLE,
|
|
|
|
SYSZ_INS_CLGRJLE,
|
|
|
|
SYSZ_INS_CLIJLE,
|
|
|
|
SYSZ_INS_CLRJLE,
|
|
|
|
SYSZ_INS_CRJLE,
|
|
|
|
SYSZ_INS_CGIJNE,
|
|
|
|
SYSZ_INS_CGRJNE,
|
|
|
|
SYSZ_INS_CIJNE,
|
|
|
|
SYSZ_INS_CLGIJNE,
|
|
|
|
SYSZ_INS_CLGRJNE,
|
|
|
|
SYSZ_INS_CLIJNE,
|
|
|
|
SYSZ_INS_CLRJNE,
|
|
|
|
SYSZ_INS_CRJNE,
|
|
|
|
SYSZ_INS_CGIJLH,
|
|
|
|
SYSZ_INS_CGRJLH,
|
|
|
|
SYSZ_INS_CIJLH,
|
|
|
|
SYSZ_INS_CLGIJLH,
|
|
|
|
SYSZ_INS_CLGRJLH,
|
|
|
|
SYSZ_INS_CLIJLH,
|
|
|
|
SYSZ_INS_CLRJLH,
|
|
|
|
SYSZ_INS_CRJLH,
|
|
|
|
SYSZ_INS_BLR,
|
|
|
|
SYSZ_INS_BLER,
|
|
|
|
SYSZ_INS_JLE,
|
|
|
|
SYSZ_INS_JGLE,
|
|
|
|
SYSZ_INS_LOCLE,
|
|
|
|
SYSZ_INS_LOCGLE,
|
|
|
|
SYSZ_INS_LOCGRLE,
|
|
|
|
SYSZ_INS_LOCRLE,
|
|
|
|
SYSZ_INS_STOCLE,
|
|
|
|
SYSZ_INS_STOCGLE,
|
|
|
|
SYSZ_INS_BLHR,
|
|
|
|
SYSZ_INS_JLH,
|
|
|
|
SYSZ_INS_JGLH,
|
|
|
|
SYSZ_INS_LOCLH,
|
|
|
|
SYSZ_INS_LOCGLH,
|
|
|
|
SYSZ_INS_LOCGRLH,
|
|
|
|
SYSZ_INS_LOCRLH,
|
|
|
|
SYSZ_INS_STOCLH,
|
|
|
|
SYSZ_INS_STOCGLH,
|
|
|
|
SYSZ_INS_JL,
|
|
|
|
SYSZ_INS_JGL,
|
|
|
|
SYSZ_INS_LOCL,
|
|
|
|
SYSZ_INS_LOCGL,
|
|
|
|
SYSZ_INS_LOCGRL,
|
|
|
|
SYSZ_INS_LOCRL,
|
|
|
|
SYSZ_INS_LOC,
|
|
|
|
SYSZ_INS_LOCG,
|
|
|
|
SYSZ_INS_LOCGR,
|
|
|
|
SYSZ_INS_LOCR,
|
|
|
|
SYSZ_INS_STOCL,
|
|
|
|
SYSZ_INS_STOCGL,
|
|
|
|
SYSZ_INS_BNER,
|
|
|
|
SYSZ_INS_JNE,
|
|
|
|
SYSZ_INS_JGNE,
|
|
|
|
SYSZ_INS_LOCNE,
|
|
|
|
SYSZ_INS_LOCGNE,
|
|
|
|
SYSZ_INS_LOCGRNE,
|
|
|
|
SYSZ_INS_LOCRNE,
|
|
|
|
SYSZ_INS_STOCNE,
|
|
|
|
SYSZ_INS_STOCGNE,
|
|
|
|
SYSZ_INS_BNHR,
|
|
|
|
SYSZ_INS_BNHER,
|
|
|
|
SYSZ_INS_JNHE,
|
|
|
|
SYSZ_INS_JGNHE,
|
|
|
|
SYSZ_INS_LOCNHE,
|
|
|
|
SYSZ_INS_LOCGNHE,
|
|
|
|
SYSZ_INS_LOCGRNHE,
|
|
|
|
SYSZ_INS_LOCRNHE,
|
|
|
|
SYSZ_INS_STOCNHE,
|
|
|
|
SYSZ_INS_STOCGNHE,
|
|
|
|
SYSZ_INS_JNH,
|
|
|
|
SYSZ_INS_JGNH,
|
|
|
|
SYSZ_INS_LOCNH,
|
|
|
|
SYSZ_INS_LOCGNH,
|
|
|
|
SYSZ_INS_LOCGRNH,
|
|
|
|
SYSZ_INS_LOCRNH,
|
|
|
|
SYSZ_INS_STOCNH,
|
|
|
|
SYSZ_INS_STOCGNH,
|
|
|
|
SYSZ_INS_BNLR,
|
|
|
|
SYSZ_INS_BNLER,
|
|
|
|
SYSZ_INS_JNLE,
|
|
|
|
SYSZ_INS_JGNLE,
|
|
|
|
SYSZ_INS_LOCNLE,
|
|
|
|
SYSZ_INS_LOCGNLE,
|
|
|
|
SYSZ_INS_LOCGRNLE,
|
|
|
|
SYSZ_INS_LOCRNLE,
|
|
|
|
SYSZ_INS_STOCNLE,
|
|
|
|
SYSZ_INS_STOCGNLE,
|
|
|
|
SYSZ_INS_BNLHR,
|
|
|
|
SYSZ_INS_JNLH,
|
|
|
|
SYSZ_INS_JGNLH,
|
|
|
|
SYSZ_INS_LOCNLH,
|
|
|
|
SYSZ_INS_LOCGNLH,
|
|
|
|
SYSZ_INS_LOCGRNLH,
|
|
|
|
SYSZ_INS_LOCRNLH,
|
|
|
|
SYSZ_INS_STOCNLH,
|
|
|
|
SYSZ_INS_STOCGNLH,
|
|
|
|
SYSZ_INS_JNL,
|
|
|
|
SYSZ_INS_JGNL,
|
|
|
|
SYSZ_INS_LOCNL,
|
|
|
|
SYSZ_INS_LOCGNL,
|
|
|
|
SYSZ_INS_LOCGRNL,
|
|
|
|
SYSZ_INS_LOCRNL,
|
|
|
|
SYSZ_INS_STOCNL,
|
|
|
|
SYSZ_INS_STOCGNL,
|
|
|
|
SYSZ_INS_BNOR,
|
|
|
|
SYSZ_INS_JNO,
|
|
|
|
SYSZ_INS_JGNO,
|
|
|
|
SYSZ_INS_LOCNO,
|
|
|
|
SYSZ_INS_LOCGNO,
|
|
|
|
SYSZ_INS_LOCGRNO,
|
|
|
|
SYSZ_INS_LOCRNO,
|
|
|
|
SYSZ_INS_STOCNO,
|
|
|
|
SYSZ_INS_STOCGNO,
|
|
|
|
SYSZ_INS_BOR,
|
|
|
|
SYSZ_INS_JO,
|
|
|
|
SYSZ_INS_JGO,
|
|
|
|
SYSZ_INS_LOCO,
|
|
|
|
SYSZ_INS_LOCGO,
|
|
|
|
SYSZ_INS_LOCGRO,
|
|
|
|
SYSZ_INS_LOCRO,
|
|
|
|
SYSZ_INS_STOCO,
|
|
|
|
SYSZ_INS_STOCGO,
|
|
|
|
SYSZ_INS_STOC,
|
|
|
|
SYSZ_INS_STOCG,
|
|
|
|
SYSZ_INS_BASR,
|
|
|
|
SYSZ_INS_BR,
|
|
|
|
SYSZ_INS_BRAS,
|
|
|
|
SYSZ_INS_BRASL,
|
|
|
|
SYSZ_INS_J,
|
|
|
|
SYSZ_INS_JG,
|
|
|
|
SYSZ_INS_BRCT,
|
|
|
|
SYSZ_INS_BRCTG,
|
|
|
|
SYSZ_INS_C,
|
|
|
|
SYSZ_INS_CDB,
|
|
|
|
SYSZ_INS_CDBR,
|
|
|
|
SYSZ_INS_CDFBR,
|
|
|
|
SYSZ_INS_CDGBR,
|
|
|
|
SYSZ_INS_CDLFBR,
|
|
|
|
SYSZ_INS_CDLGBR,
|
|
|
|
SYSZ_INS_CEB,
|
|
|
|
SYSZ_INS_CEBR,
|
|
|
|
SYSZ_INS_CEFBR,
|
|
|
|
SYSZ_INS_CEGBR,
|
|
|
|
SYSZ_INS_CELFBR,
|
|
|
|
SYSZ_INS_CELGBR,
|
|
|
|
SYSZ_INS_CFDBR,
|
|
|
|
SYSZ_INS_CFEBR,
|
|
|
|
SYSZ_INS_CFI,
|
|
|
|
SYSZ_INS_CFXBR,
|
|
|
|
SYSZ_INS_CG,
|
|
|
|
SYSZ_INS_CGDBR,
|
|
|
|
SYSZ_INS_CGEBR,
|
|
|
|
SYSZ_INS_CGF,
|
|
|
|
SYSZ_INS_CGFI,
|
|
|
|
SYSZ_INS_CGFR,
|
|
|
|
SYSZ_INS_CGFRL,
|
|
|
|
SYSZ_INS_CGH,
|
|
|
|
SYSZ_INS_CGHI,
|
|
|
|
SYSZ_INS_CGHRL,
|
|
|
|
SYSZ_INS_CGHSI,
|
|
|
|
SYSZ_INS_CGR,
|
|
|
|
SYSZ_INS_CGRL,
|
|
|
|
SYSZ_INS_CGXBR,
|
|
|
|
SYSZ_INS_CH,
|
|
|
|
SYSZ_INS_CHF,
|
|
|
|
SYSZ_INS_CHHSI,
|
|
|
|
SYSZ_INS_CHI,
|
|
|
|
SYSZ_INS_CHRL,
|
|
|
|
SYSZ_INS_CHSI,
|
|
|
|
SYSZ_INS_CHY,
|
|
|
|
SYSZ_INS_CIH,
|
|
|
|
SYSZ_INS_CL,
|
|
|
|
SYSZ_INS_CLC,
|
|
|
|
SYSZ_INS_CLFDBR,
|
|
|
|
SYSZ_INS_CLFEBR,
|
|
|
|
SYSZ_INS_CLFHSI,
|
|
|
|
SYSZ_INS_CLFI,
|
|
|
|
SYSZ_INS_CLFXBR,
|
|
|
|
SYSZ_INS_CLG,
|
|
|
|
SYSZ_INS_CLGDBR,
|
|
|
|
SYSZ_INS_CLGEBR,
|
|
|
|
SYSZ_INS_CLGF,
|
|
|
|
SYSZ_INS_CLGFI,
|
|
|
|
SYSZ_INS_CLGFR,
|
|
|
|
SYSZ_INS_CLGFRL,
|
|
|
|
SYSZ_INS_CLGHRL,
|
|
|
|
SYSZ_INS_CLGHSI,
|
|
|
|
SYSZ_INS_CLGR,
|
|
|
|
SYSZ_INS_CLGRL,
|
|
|
|
SYSZ_INS_CLGXBR,
|
|
|
|
SYSZ_INS_CLHF,
|
|
|
|
SYSZ_INS_CLHHSI,
|
|
|
|
SYSZ_INS_CLHRL,
|
|
|
|
SYSZ_INS_CLI,
|
|
|
|
SYSZ_INS_CLIH,
|
|
|
|
SYSZ_INS_CLIY,
|
|
|
|
SYSZ_INS_CLR,
|
|
|
|
SYSZ_INS_CLRL,
|
|
|
|
SYSZ_INS_CLST,
|
|
|
|
SYSZ_INS_CLY,
|
|
|
|
SYSZ_INS_CPSDR,
|
|
|
|
SYSZ_INS_CR,
|
|
|
|
SYSZ_INS_CRL,
|
|
|
|
SYSZ_INS_CS,
|
|
|
|
SYSZ_INS_CSG,
|
|
|
|
SYSZ_INS_CSY,
|
|
|
|
SYSZ_INS_CXBR,
|
|
|
|
SYSZ_INS_CXFBR,
|
|
|
|
SYSZ_INS_CXGBR,
|
|
|
|
SYSZ_INS_CXLFBR,
|
|
|
|
SYSZ_INS_CXLGBR,
|
|
|
|
SYSZ_INS_CY,
|
|
|
|
SYSZ_INS_DDB,
|
|
|
|
SYSZ_INS_DDBR,
|
|
|
|
SYSZ_INS_DEB,
|
|
|
|
SYSZ_INS_DEBR,
|
|
|
|
SYSZ_INS_DL,
|
|
|
|
SYSZ_INS_DLG,
|
|
|
|
SYSZ_INS_DLGR,
|
|
|
|
SYSZ_INS_DLR,
|
|
|
|
SYSZ_INS_DSG,
|
|
|
|
SYSZ_INS_DSGF,
|
|
|
|
SYSZ_INS_DSGFR,
|
|
|
|
SYSZ_INS_DSGR,
|
|
|
|
SYSZ_INS_DXBR,
|
|
|
|
SYSZ_INS_EAR,
|
|
|
|
SYSZ_INS_FIDBR,
|
|
|
|
SYSZ_INS_FIDBRA,
|
|
|
|
SYSZ_INS_FIEBR,
|
|
|
|
SYSZ_INS_FIEBRA,
|
|
|
|
SYSZ_INS_FIXBR,
|
|
|
|
SYSZ_INS_FIXBRA,
|
|
|
|
SYSZ_INS_FLOGR,
|
|
|
|
SYSZ_INS_IC,
|
|
|
|
SYSZ_INS_ICY,
|
|
|
|
SYSZ_INS_IIHF,
|
|
|
|
SYSZ_INS_IIHH,
|
|
|
|
SYSZ_INS_IIHL,
|
|
|
|
SYSZ_INS_IILF,
|
|
|
|
SYSZ_INS_IILH,
|
|
|
|
SYSZ_INS_IILL,
|
|
|
|
SYSZ_INS_IPM,
|
|
|
|
SYSZ_INS_L,
|
|
|
|
SYSZ_INS_LA,
|
|
|
|
SYSZ_INS_LAA,
|
|
|
|
SYSZ_INS_LAAG,
|
|
|
|
SYSZ_INS_LAAL,
|
|
|
|
SYSZ_INS_LAALG,
|
|
|
|
SYSZ_INS_LAN,
|
|
|
|
SYSZ_INS_LANG,
|
|
|
|
SYSZ_INS_LAO,
|
|
|
|
SYSZ_INS_LAOG,
|
|
|
|
SYSZ_INS_LARL,
|
|
|
|
SYSZ_INS_LAX,
|
|
|
|
SYSZ_INS_LAXG,
|
|
|
|
SYSZ_INS_LAY,
|
|
|
|
SYSZ_INS_LB,
|
|
|
|
SYSZ_INS_LBH,
|
|
|
|
SYSZ_INS_LBR,
|
|
|
|
SYSZ_INS_LCDBR,
|
|
|
|
SYSZ_INS_LCEBR,
|
|
|
|
SYSZ_INS_LCGFR,
|
|
|
|
SYSZ_INS_LCGR,
|
|
|
|
SYSZ_INS_LCR,
|
|
|
|
SYSZ_INS_LCXBR,
|
|
|
|
SYSZ_INS_LD,
|
|
|
|
SYSZ_INS_LDEB,
|
|
|
|
SYSZ_INS_LDEBR,
|
|
|
|
SYSZ_INS_LDGR,
|
|
|
|
SYSZ_INS_LDR,
|
|
|
|
SYSZ_INS_LDXBR,
|
|
|
|
SYSZ_INS_LDY,
|
|
|
|
SYSZ_INS_LE,
|
|
|
|
SYSZ_INS_LEDBR,
|
|
|
|
SYSZ_INS_LER,
|
|
|
|
SYSZ_INS_LEXBR,
|
|
|
|
SYSZ_INS_LEY,
|
|
|
|
SYSZ_INS_LFH,
|
|
|
|
SYSZ_INS_LG,
|
|
|
|
SYSZ_INS_LGB,
|
|
|
|
SYSZ_INS_LGBR,
|
|
|
|
SYSZ_INS_LGDR,
|
|
|
|
SYSZ_INS_LGF,
|
|
|
|
SYSZ_INS_LGFI,
|
|
|
|
SYSZ_INS_LGFR,
|
|
|
|
SYSZ_INS_LGFRL,
|
|
|
|
SYSZ_INS_LGH,
|
|
|
|
SYSZ_INS_LGHI,
|
|
|
|
SYSZ_INS_LGHR,
|
|
|
|
SYSZ_INS_LGHRL,
|
|
|
|
SYSZ_INS_LGR,
|
|
|
|
SYSZ_INS_LGRL,
|
|
|
|
SYSZ_INS_LH,
|
|
|
|
SYSZ_INS_LHH,
|
|
|
|
SYSZ_INS_LHI,
|
|
|
|
SYSZ_INS_LHR,
|
|
|
|
SYSZ_INS_LHRL,
|
|
|
|
SYSZ_INS_LHY,
|
|
|
|
SYSZ_INS_LLC,
|
|
|
|
SYSZ_INS_LLCH,
|
|
|
|
SYSZ_INS_LLCR,
|
|
|
|
SYSZ_INS_LLGC,
|
|
|
|
SYSZ_INS_LLGCR,
|
|
|
|
SYSZ_INS_LLGF,
|
|
|
|
SYSZ_INS_LLGFR,
|
|
|
|
SYSZ_INS_LLGFRL,
|
|
|
|
SYSZ_INS_LLGH,
|
|
|
|
SYSZ_INS_LLGHR,
|
|
|
|
SYSZ_INS_LLGHRL,
|
|
|
|
SYSZ_INS_LLH,
|
|
|
|
SYSZ_INS_LLHH,
|
|
|
|
SYSZ_INS_LLHR,
|
|
|
|
SYSZ_INS_LLHRL,
|
|
|
|
SYSZ_INS_LLIHF,
|
|
|
|
SYSZ_INS_LLIHH,
|
|
|
|
SYSZ_INS_LLIHL,
|
|
|
|
SYSZ_INS_LLILF,
|
|
|
|
SYSZ_INS_LLILH,
|
|
|
|
SYSZ_INS_LLILL,
|
|
|
|
SYSZ_INS_LMG,
|
|
|
|
SYSZ_INS_LNDBR,
|
|
|
|
SYSZ_INS_LNEBR,
|
|
|
|
SYSZ_INS_LNGFR,
|
|
|
|
SYSZ_INS_LNGR,
|
|
|
|
SYSZ_INS_LNR,
|
|
|
|
SYSZ_INS_LNXBR,
|
|
|
|
SYSZ_INS_LPDBR,
|
|
|
|
SYSZ_INS_LPEBR,
|
|
|
|
SYSZ_INS_LPGFR,
|
|
|
|
SYSZ_INS_LPGR,
|
|
|
|
SYSZ_INS_LPR,
|
|
|
|
SYSZ_INS_LPXBR,
|
|
|
|
SYSZ_INS_LR,
|
|
|
|
SYSZ_INS_LRL,
|
|
|
|
SYSZ_INS_LRV,
|
|
|
|
SYSZ_INS_LRVG,
|
|
|
|
SYSZ_INS_LRVGR,
|
|
|
|
SYSZ_INS_LRVR,
|
|
|
|
SYSZ_INS_LT,
|
|
|
|
SYSZ_INS_LTDBR,
|
|
|
|
SYSZ_INS_LTEBR,
|
|
|
|
SYSZ_INS_LTG,
|
|
|
|
SYSZ_INS_LTGF,
|
|
|
|
SYSZ_INS_LTGFR,
|
|
|
|
SYSZ_INS_LTGR,
|
|
|
|
SYSZ_INS_LTR,
|
|
|
|
SYSZ_INS_LTXBR,
|
|
|
|
SYSZ_INS_LXDB,
|
|
|
|
SYSZ_INS_LXDBR,
|
|
|
|
SYSZ_INS_LXEB,
|
|
|
|
SYSZ_INS_LXEBR,
|
|
|
|
SYSZ_INS_LXR,
|
|
|
|
SYSZ_INS_LY,
|
|
|
|
SYSZ_INS_LZDR,
|
|
|
|
SYSZ_INS_LZER,
|
|
|
|
SYSZ_INS_LZXR,
|
|
|
|
SYSZ_INS_MADB,
|
|
|
|
SYSZ_INS_MADBR,
|
|
|
|
SYSZ_INS_MAEB,
|
|
|
|
SYSZ_INS_MAEBR,
|
|
|
|
SYSZ_INS_MDB,
|
|
|
|
SYSZ_INS_MDBR,
|
|
|
|
SYSZ_INS_MDEB,
|
|
|
|
SYSZ_INS_MDEBR,
|
|
|
|
SYSZ_INS_MEEB,
|
|
|
|
SYSZ_INS_MEEBR,
|
|
|
|
SYSZ_INS_MGHI,
|
|
|
|
SYSZ_INS_MH,
|
|
|
|
SYSZ_INS_MHI,
|
|
|
|
SYSZ_INS_MHY,
|
|
|
|
SYSZ_INS_MLG,
|
|
|
|
SYSZ_INS_MLGR,
|
|
|
|
SYSZ_INS_MS,
|
|
|
|
SYSZ_INS_MSDB,
|
|
|
|
SYSZ_INS_MSDBR,
|
|
|
|
SYSZ_INS_MSEB,
|
|
|
|
SYSZ_INS_MSEBR,
|
|
|
|
SYSZ_INS_MSFI,
|
|
|
|
SYSZ_INS_MSG,
|
|
|
|
SYSZ_INS_MSGF,
|
|
|
|
SYSZ_INS_MSGFI,
|
|
|
|
SYSZ_INS_MSGFR,
|
|
|
|
SYSZ_INS_MSGR,
|
|
|
|
SYSZ_INS_MSR,
|
|
|
|
SYSZ_INS_MSY,
|
|
|
|
SYSZ_INS_MVC,
|
|
|
|
SYSZ_INS_MVGHI,
|
|
|
|
SYSZ_INS_MVHHI,
|
|
|
|
SYSZ_INS_MVHI,
|
|
|
|
SYSZ_INS_MVI,
|
|
|
|
SYSZ_INS_MVIY,
|
|
|
|
SYSZ_INS_MVST,
|
|
|
|
SYSZ_INS_MXBR,
|
|
|
|
SYSZ_INS_MXDB,
|
|
|
|
SYSZ_INS_MXDBR,
|
|
|
|
SYSZ_INS_N,
|
|
|
|
SYSZ_INS_NC,
|
|
|
|
SYSZ_INS_NG,
|
|
|
|
SYSZ_INS_NGR,
|
|
|
|
SYSZ_INS_NGRK,
|
|
|
|
SYSZ_INS_NI,
|
|
|
|
SYSZ_INS_NIHF,
|
|
|
|
SYSZ_INS_NIHH,
|
|
|
|
SYSZ_INS_NIHL,
|
|
|
|
SYSZ_INS_NILF,
|
|
|
|
SYSZ_INS_NILH,
|
|
|
|
SYSZ_INS_NILL,
|
|
|
|
SYSZ_INS_NIY,
|
|
|
|
SYSZ_INS_NR,
|
|
|
|
SYSZ_INS_NRK,
|
|
|
|
SYSZ_INS_NY,
|
|
|
|
SYSZ_INS_O,
|
|
|
|
SYSZ_INS_OC,
|
|
|
|
SYSZ_INS_OG,
|
|
|
|
SYSZ_INS_OGR,
|
|
|
|
SYSZ_INS_OGRK,
|
|
|
|
SYSZ_INS_OI,
|
|
|
|
SYSZ_INS_OIHF,
|
|
|
|
SYSZ_INS_OIHH,
|
|
|
|
SYSZ_INS_OIHL,
|
|
|
|
SYSZ_INS_OILF,
|
|
|
|
SYSZ_INS_OILH,
|
|
|
|
SYSZ_INS_OILL,
|
|
|
|
SYSZ_INS_OIY,
|
|
|
|
SYSZ_INS_OR,
|
|
|
|
SYSZ_INS_ORK,
|
|
|
|
SYSZ_INS_OY,
|
|
|
|
SYSZ_INS_PFD,
|
|
|
|
SYSZ_INS_PFDRL,
|
|
|
|
SYSZ_INS_RISBG,
|
|
|
|
SYSZ_INS_RISBHG,
|
|
|
|
SYSZ_INS_RISBLG,
|
|
|
|
SYSZ_INS_RLL,
|
|
|
|
SYSZ_INS_RLLG,
|
|
|
|
SYSZ_INS_RNSBG,
|
|
|
|
SYSZ_INS_ROSBG,
|
|
|
|
SYSZ_INS_RXSBG,
|
|
|
|
SYSZ_INS_S,
|
|
|
|
SYSZ_INS_SDB,
|
|
|
|
SYSZ_INS_SDBR,
|
|
|
|
SYSZ_INS_SEB,
|
|
|
|
SYSZ_INS_SEBR,
|
|
|
|
SYSZ_INS_SG,
|
|
|
|
SYSZ_INS_SGF,
|
|
|
|
SYSZ_INS_SGFR,
|
|
|
|
SYSZ_INS_SGR,
|
|
|
|
SYSZ_INS_SGRK,
|
|
|
|
SYSZ_INS_SH,
|
|
|
|
SYSZ_INS_SHY,
|
|
|
|
SYSZ_INS_SL,
|
|
|
|
SYSZ_INS_SLB,
|
|
|
|
SYSZ_INS_SLBG,
|
|
|
|
SYSZ_INS_SLBR,
|
|
|
|
SYSZ_INS_SLFI,
|
|
|
|
SYSZ_INS_SLG,
|
|
|
|
SYSZ_INS_SLBGR,
|
|
|
|
SYSZ_INS_SLGF,
|
|
|
|
SYSZ_INS_SLGFI,
|
|
|
|
SYSZ_INS_SLGFR,
|
|
|
|
SYSZ_INS_SLGR,
|
|
|
|
SYSZ_INS_SLGRK,
|
|
|
|
SYSZ_INS_SLL,
|
|
|
|
SYSZ_INS_SLLG,
|
|
|
|
SYSZ_INS_SLLK,
|
|
|
|
SYSZ_INS_SLR,
|
|
|
|
SYSZ_INS_SLRK,
|
|
|
|
SYSZ_INS_SLY,
|
|
|
|
SYSZ_INS_SQDB,
|
|
|
|
SYSZ_INS_SQDBR,
|
|
|
|
SYSZ_INS_SQEB,
|
|
|
|
SYSZ_INS_SQEBR,
|
|
|
|
SYSZ_INS_SQXBR,
|
|
|
|
SYSZ_INS_SR,
|
|
|
|
SYSZ_INS_SRA,
|
|
|
|
SYSZ_INS_SRAG,
|
|
|
|
SYSZ_INS_SRAK,
|
|
|
|
SYSZ_INS_SRK,
|
|
|
|
SYSZ_INS_SRL,
|
|
|
|
SYSZ_INS_SRLG,
|
|
|
|
SYSZ_INS_SRLK,
|
|
|
|
SYSZ_INS_SRST,
|
|
|
|
SYSZ_INS_ST,
|
|
|
|
SYSZ_INS_STC,
|
|
|
|
SYSZ_INS_STCH,
|
|
|
|
SYSZ_INS_STCY,
|
|
|
|
SYSZ_INS_STD,
|
|
|
|
SYSZ_INS_STDY,
|
|
|
|
SYSZ_INS_STE,
|
|
|
|
SYSZ_INS_STEY,
|
|
|
|
SYSZ_INS_STFH,
|
|
|
|
SYSZ_INS_STG,
|
|
|
|
SYSZ_INS_STGRL,
|
|
|
|
SYSZ_INS_STH,
|
|
|
|
SYSZ_INS_STHH,
|
|
|
|
SYSZ_INS_STHRL,
|
|
|
|
SYSZ_INS_STHY,
|
|
|
|
SYSZ_INS_STMG,
|
|
|
|
SYSZ_INS_STRL,
|
|
|
|
SYSZ_INS_STRV,
|
|
|
|
SYSZ_INS_STRVG,
|
|
|
|
SYSZ_INS_STY,
|
|
|
|
SYSZ_INS_SXBR,
|
|
|
|
SYSZ_INS_SY,
|
|
|
|
SYSZ_INS_TM,
|
|
|
|
SYSZ_INS_TMHH,
|
|
|
|
SYSZ_INS_TMHL,
|
|
|
|
SYSZ_INS_TMLH,
|
|
|
|
SYSZ_INS_TMLL,
|
|
|
|
SYSZ_INS_TMY,
|
|
|
|
SYSZ_INS_X,
|
|
|
|
SYSZ_INS_XC,
|
|
|
|
SYSZ_INS_XG,
|
|
|
|
SYSZ_INS_XGR,
|
|
|
|
SYSZ_INS_XGRK,
|
|
|
|
SYSZ_INS_XI,
|
|
|
|
SYSZ_INS_XIHF,
|
|
|
|
SYSZ_INS_XILF,
|
|
|
|
SYSZ_INS_XIY,
|
|
|
|
SYSZ_INS_XR,
|
|
|
|
SYSZ_INS_XRK,
|
|
|
|
SYSZ_INS_XY,
|
|
|
|
SYSZ_INS_MAX, // <-- mark the end of the list of instructions
|
|
|
|
} sysz_insn;
|
|
|
|
|
|
|
|
//> Group of SystemZ instructions
|
|
|
|
typedef enum sysz_insn_group {
|
|
|
|
SYSZ_GRP_INVALID = 0,
|
|
|
|
SYSZ_GRP_FEATUREDISTINCTOPS,
|
|
|
|
SYSZ_GRP_FEATUREFPEXTENSION,
|
|
|
|
SYSZ_GRP_FEATUREHIGHWORD,
|
|
|
|
SYSZ_GRP_FEATUREINTERLOCKEDACCESS1,
|
|
|
|
SYSZ_GRP_FEATURELOADSTOREONCOND,
|
|
|
|
|
|
|
|
SYSZ_GRP_JUMP, // all jump instructions (conditional+direct+indirect jumps)
|
|
|
|
|
|
|
|
SYSZ_GRP_MAX, // <-- mark the end of the list of groups
|
|
|
|
} sysz_insn_group;
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|