package s390xasm
import "golang.org/x/arch/s390x/s390xasm"
Index ¶
- func GNUSyntax(inst Inst, pc uint64) string
- func GoSyntax(inst Inst, pc uint64, symname func(uint64) (string, uint64)) string
- func HandleExtndMnemonic(inst *Inst) string
- type Arg
- type ArgType
- type Args
- type Base
- type BitField
- func (b BitField) Parse(i uint64) uint64
- func (b BitField) ParseSigned(i uint64) int64
- func (b BitField) String() string
- type Disp12
- type Disp20
- type Imm
- type Index
- type Inst
- type Len
- type Mask
- type Op
- type Reg
- type RegIm12
- type RegIm16
- type RegIm24
- type RegIm32
- type Sign16
- type Sign32
- type Sign8
- type VReg
Functions ¶
func GNUSyntax ¶
This is the function that is called to print the disassembled instruction in the GNU (AT&T) syntax form.
func GoSyntax ¶
GoSyntax returns the Go assembler syntax for the instruction. The syntax was originally defined by Plan 9. The inst relates to single instruction. The pc is the program counter of the instruction, used for expanding PC-relative addresses into absolute ones. The symname function queries the symbol table for the program being disassembled. Given a target address it returns the name and base address of the symbol containing the target, if any; otherwise it returns "", 0.
func HandleExtndMnemonic ¶
"func Handleextndmnemonic" - This is the function where the extended mnemonic logic is implemented. This function defines various structures to keep a list of base instructions and their extended mnemonic strings. These structure will also have M-field values and offset values defined, based on their type. HandleExtndMnemonic takes "inst" structure as the input variable. Inst structure will have all the details related to an instruction. Based on the opcode base string, a switch-case statement is executed. In that, based on the M-field value and the offset value of that particular M-field, extended mnemonic string is either searched or constructed by adding couple of extra strings to the base opcode string from one of the structure defined below.
Types ¶
type Arg ¶
An Arg is a single instruction argument. One of these types: Reg, Base, Index, Disp20, Disp12, Len, Mask, Sign8, Sign16, Sign32, RegIm12, RegIm16, RegIm24, RegIm32.
type ArgType ¶
type ArgType int8
const ( TypeUnknown ArgType = iota TypeReg // integer register TypeFPReg // floating point register TypeACReg // access register TypeCReg // control register TypeVecReg // vector register TypeImmUnsigned // unsigned immediate/flag/mask, this is the catch-all type TypeImmSigned8 // Signed 8-bit Immdediate TypeImmSigned16 // Signed 16-bit Immdediate TypeImmSigned32 // Signed 32-bit Immdediate TypeBaseReg // Base Register for accessing memory TypeIndexReg // Index Register TypeDispUnsigned // Displacement 12-bit unsigned for memory address TypeDispSigned20 // Displacement 20-bit signed for memory address TypeRegImSigned12 // RegisterImmediate 12-bit signed data TypeRegImSigned16 // RegisterImmediate 16-bit signed data TypeRegImSigned24 // RegisterImmediate 24-bit signed data TypeRegImSigned32 // RegisterImmediate 32-bit signed data TypeMask // 4-bit Mask TypeLen // Length of Memory Operand TypeLast )
func (ArgType) GoString ¶
func (ArgType) String ¶
type Args ¶
type Args [8]Arg
An Args holds the instruction arguments. If an instruction has fewer than 6 arguments, the final elements in the array are nil.
type Base ¶
type Base uint8
Base represents an 4-bit Base Register field
func (Base) IsArg ¶
func (Base) IsArg()
func (Base) String ¶
type BitField ¶
type BitField struct { Offs uint8 // the offset of the left-most bit. Bits uint8 // length in bits. }
A BitField is a bit-field in a 64-bit double word. Bits are counted from 0 from the MSB to 63 as the LSB.
func (BitField) Parse ¶
Parse extracts the bitfield b from i, and return it as an unsigned integer. Parse will panic if b is invalid.
func (BitField) ParseSigned ¶
ParseSigned extracts the bitfield b from i, and return it as a signed integer. ParseSigned will panic if b is invalid.
func (BitField) String ¶
type Disp12 ¶
type Disp12 uint16
Disp12 represents an 12-bit Unsigned Displacement
func (Disp12) IsArg ¶
func (Disp12) IsArg()
func (Disp12) String ¶
type Disp20 ¶
type Disp20 uint32
Disp20 represents an 20-bit Unsigned Displacement
func (Disp20) IsArg ¶
func (Disp20) IsArg()
func (Disp20) String ¶
type Imm ¶
type Imm uint32
Imm represents an immediate number.
func (Imm) IsArg ¶
func (Imm) IsArg()
func (Imm) String ¶
type Index ¶
type Index uint8
Index represents an 4-bit Index Register field
func (Index) IsArg ¶
func (Index) IsArg()
func (Index) String ¶
type Inst ¶
type Inst struct { Op Op // Opcode mnemonic Enc uint64 // Raw encoding bits Len int // Length of encoding in bytes. Args Args // Instruction arguments, in s390x ISA manual order. }
func Decode ¶
Decode decodes the leading bytes in src as a single instruction using byte order ord.
func (Inst) String ¶
type Len ¶
type Len uint8
Len represents an 8-bit type holds 4/8-bit Len argument
func (Len) IsArg ¶
func (Len) IsArg()
func (Len) String ¶
type Mask ¶
type Mask uint8
Mask represents an 4-bit mask value
func (Mask) IsArg ¶
func (Mask) IsArg()
func (Mask) String ¶
type Op ¶
type Op uint16
An Op is an instruction operation.
const ( A Op AR ARK AY AG AGR AGRK AGF AGFR AXBR AXTR AXTRA ADB ADBR ADTR ADTRA AEB AEBR AP AH AHY AGH AHI AGHI AHHHR AHHLR AFI AHIK ASI AGHIK AGFI AGSI AIH AL ALR ALRK ALY ALG ALGR ALGRK ALGF ALGFR ALHHHR ALHHLR ALFI ALGFI ALC ALCR ALCG ALCGR ALHSIK ALSI ALGHSIK ALGSI ALSIH ALSIHN AXR AD ADR AE AER AW AWR AU AUR N NR NRK NY NG NGR NGRK NC NI NIY NIHH NIHL NIHF NILH NILL NILF NCRK NCGRK BAL BALR BAS BASR BASSM BSA BSM BAKR BSG BIC BC BCR BCT BCTR BCTG BCTGR BXH BXHG BXLE BXLEG BPP BPRP BRAS BRASL BRC BRCL BRCT BRCTG BRCTH BRXH BRXHG BRXLE BRXLG XSCH CKSM KM KMA KMC KMF KMCTR KMO CSCH C CR CY CG CGR CGF CGFR CXBR CXTR CXR CDB CDBR CDTR CD CDR CEB CEBR CE CER CRB CGRB CRJ CGRJ CFC CRDTE KXBR KXTR KDB KDBR KDTR KEB KEBR CS CSY CSG CSP CSPG CSST CRT CGRT CEXTR CEDTR CP CDS CDSY CDSG CH CHY CGH CHHSI CHI CHSI CGHI CGHSI CHRL CGHRL CHF CHHR CHLR CFI CGFI CIB CGIB CIJ CGIJ CIT CGIT CIH CL CLR CLY CLG CLGR CLGF CLGFR CLC CLI CLIY CLRB CLGRB CLRJ CLGRJ CLRT CLT CLGRT CLGT CLMH CLM CLMY CLHF CLHHR CLHLR CLHHSI CLFI CLFHSI CLGHSI CLGFI CLIB CLGIB CLIJ CLGIJ CLFIT CLGIT CLIH CLCL CLCLE CLCLU CLRL CLHRL CLGRL CLGHRL CLGFRL CLST CRL CGRL CGFRL CUSE CMPSC KDSA KIMD KLMD KMAC THDR THDER CXFBR CXFBRA CXFTR CXFR CDFBR CDFBRA CDFTR CDFR CEFBR CEFBRA CEFR CXGBR CXGBRA CXGTR CXGTRA CXGR CDGBR CDGBRA CDGTR CDGTRA CDGR CEGBR CEGBRA CEGR CXLFBR CXLFTR CDLFBR CDLFTR CELFBR CXLGBR CXLGTR CDLGBR CDLGTR CELGBR CXPT CDPT CXSTR CDSTR CXUTR CDUTR CXZT CDZT TBEDR TBDR CVB CVBY CVBG CVD CVDY CVDG CFXBR CFXBRA CGXBR CGXBRA CFXTR CGXTR CGXTRA CFXR CGXR CFDBR CFDBRA CGDBR CGDBRA CFDTR CGDTR CGDTRA CFDR CGDR CFEBR CFEBRA CGEBR CGEBRA CFER CGER CLFXBR CLGXBR CLFXTR CLGXTR CLFDBR CLGDBR CLFDTR CLGDTR CLFEBR CLGEBR CPXT CPDT CSXTR CSDTR CUXTR CUDTR CZXT CZDT CU24 CU21 CU12 CU14 CU42 CU41 CPYA CPSDR VSCSHP VSCHP DFLTCC D DR DXBR DXTR DXTRA DXR DDB DDBR DDTR DDTRA DD DDR DEB DEBR DE DER DP DL DLR DLG DLGR DSG DSGR DSGF DSGFR DIDBR DIEBR ED EDMK X XR XRK XY XG XGR XGRK XC XI XIY XIHF XILF EX EXRL EAR ESEA EEXTR EEDTR ECAG ECTG EFPC EPAR EPAIR EPSW ESAR ESAIR ESXTR ESDTR EREG EREGG ESTA ETND FLOGR HSCH HDR HER IAC IEXTR IEDTR IC ICY ICMH ICM ICMY IIHH IIHL IIHF IILH IILL IILF IPM IPK IRBM ISKE IVSK IDTE IPTE L LR LY LG LGR LGF LGFR LXR LD LDR LDY LE LER LEY LAM LAMY LA LAY LAE LAEY LARL LASP LAA LAAG LAAL LAALG LAN LANG LAX LAXG LAO LAOG LT LTR LTG LTGR LTGF LTGFR LTXBR LTXTR LTXR LTDBR LTDTR LTDR LTEBR LTER LAT LGAT LZRF LZRG LBEAR LB LBR LGB LGBR LBH LCR LCGR LCGFR LCXBR LCXR LCDBR LCDR LCDFR LCEBR LCER LCTL LCTLG LCBB FIXBR FIXBRA FIXTR FIXR FIDBR FIDBRA FIDTR FIDR FIEBR FIEBRA FIER LFPC LFAS LDGR LGDR LGG LGSC LH LHR LHY LGH LGHR LHH LOCHHI LHI LGHI LOCHI LOCGHI LHRL LGHRL LFH LFHAT LOCFH LOCFHR LGFI LXDB LXDBR LXDTR LXD LXDR LXEB LXEBR LXE LXER LDEB LDEBR LDETR LDE LDER LLGF LLGFR LLGFSG LLGFAT LLZRGF LLC LLCR LLGC LLGCR LLCH LLH LLHR LLGH LLGHR LLHH LLHRL LLGHRL LLIHH LLIHL LLIHF LLILH LLILL LLILF LLGFRL LLGT LLGTR LLGTAT LM LMY LMG LMD LMH LNR LNGR LNGFR LNXBR LNXR LNDBR LNDR LNDFR LNEBR LNER LOC LOCR LOCG LOCGR LPTEA LPD LPDG LPQ LPR LPGR LPGFR LPXBR LPXR LPDBR LPDR LPDFR LPEBR LPER LPSW LPSWE LPSWEY LRA LRAY LRAG LRL LGRL LGFRL LRVH LRV LRVR LRVG LRVGR LDXBR LDXBRA LDXTR LDXR LRDR LEXBR LEXBRA LEXR LEDBR LEDBRA LEDTR LEDR LRER LURA LURAG LZXR LZDR LZER MSTA MSCH MC MVHHI MVHI MVGHI MVC MVI MVIY MVCIN MVCL MVCLE MVCLU MVN MVPG MVCRL MVST MVCP MVCS MVCDK MVCK MVO MVCOS MVCSK MVZ MG MGRK M MFY MR MXBR MXTR MXTRA MXR MDB MDBR MDTR MDTRA MD MDR MXDB MXDBR MXD MXDR MEEB MEEBR MEE MEER MDEB MDEBR MDE MDER ME MER MAY MAYR MADB MADBR MAD MADR MAEB MAEBR MAE MAER MAYH MAYHR MAYL MAYLR MSDB MSDBR MSD MSDR MSEB MSEBR MSE MSER MP MH MHY MGH MHI MGHI MLG MLGR ML MLR MS MSC MSR MSRKC MSY MSG MSGC MSGR MSGRKC MSGF MSGFR MSFI MSGFI MYH MYHR MYL MYLR MY MYR NNRK NNGRK NNPA NIAI NTSTG NORK NOGRK NXRK NXGRK O OR ORK OY OG OGR OGRK OC OI OIY OIHH OIHL OIHF OILH OILL OILF OCRK OCGRK PACK PKA PKU PGIN PGOUT PCC PCKMO PFPO PFMF PLO PPA PRNO PTFF PTF POPCNT PFD PFDRL PC PR PT PTI PALB PTLB QAXTR QADTR QPACI RRXTR RRDTR RCHP RDP RRBE RRBM RP RSCH RLL RLLG RNSBG RXSBG RISBG RISBGN RISBHG RISBLG ROSBG SRST SRSTU SELR SELGR SELFHR SAR SAL SAC SACF SAM24 SAM31 SAM64 SRNM SRNMB SCHM SCK SCKC SCKPF SPT SRNMT SFPC SFASR SPX SPM SPKA SSAR SSAIR SSKE SSM SRP SLDA SLDL SLA SLAK SLAG SLL SLLK SLLG SRDA SRDL SRA SRAK SRAG SRL SRLK SRLG SLXT SLDT SRXT SRDT SIGP SORTL SQXBR SQXR SQDB SQDBR SQD SQDR SQEB SQEBR SQE SQER SSCH ST STY STG STD STDY STE STEY STAM STAMY STBEAR STCPS STCRW STC STCY STCH STCMH STCM STCMY STCK STCKC STCKE STCKF STCTL STCTG STAP STIDP STPT STFL STFLE STFPC STGSC STH STHY STHH STHRL STFH STOCFH STM STMY STMG STMH STOC STOCG STPQ STPX STRAG STRL STGRL STRVH STRV STRVG STSCH STSI STNSM STOSM STURA STURG S SR SRK SY SG SGR SGRK SGF SGFR SXBR SXTR SXTRA SDB SDBR SDTR SDTRA SEB SEBR SP SH SHY SGH SHHHR SHHLR SL SLR SLRK SLY SLG SLGR SLGRK SLGF SLGFR SLHHHR SLHHLR SLFI SLGFI SLB SLBR SLBG SLBGR SXR SD SDR SE SER SW SWR SU SUR SVC TAR TAM TS TB TCXB TDCXT TCDB TDCDT TCEB TDCET TDGXT TDGDT TDGET TP TPEI TPI TPROT TSCH TM TMY TMHH TMHL TMLH TMLL TMH TML TRACE TRACG TABORT TBEGINC TBEGIN TEND TR TRT TRTE TRTR TRTRE TRE TROO TROT TRTO TRTT TRAP2 TRAP4 UNPK UNPKA UNPKU UPT VA VACC VAP VAC VACCC VN VNC VAVG VAVGL VBPERM VCKSM VCP VCEQ VCH VCHL VCSPH VCVB VCVBG VCVD VCVDG VCLZDP VCLZ VCTZ VDP VEC VECL VERIM VERLL VERLLV VESLV VESL VESRA VESRAV VESRL VESRLV VX VFAE VFEE VFENE VFA WFK VFCE VFCH VFCHE WFC VCLFNH VCLFNL VCRNF VCFPS VCDG VCFPL VCDLG VCFN VCSFP VCGD VCLFP VCLGD VCNF VFD VFLL VFLR VFMAX VFMIN VFM VFMA VFMS VFNMA VFNMS VFPSO VFSQ VFS VFTCI VGFM VGFMA VGEF VGEG VGBM VGM VISTR VL VLR VLREP VLEBRH VLEBRF VLEBRG VLBRREP VLLEBRZ VLBR VLC VLEH VLEF VLEG VLEB VLEIH VLEIF VLEIG VLEIB VLER VFI VLGV VLIP VLLEZ VLM VLP VLRL VLRLR VLBB VLVG VLVGP VLL VMX VMXL VMRH VMRL VMN VMNL VMAE VMAH VMALE VMALH VMALO VMAL VMAO VMSP VMP VME VMH VMLE VMLH VMLO VML VMO VMSL VNN VNO VNX VO VOC VPK VPKLS VPKS VPKZ VPKZR VPSOP VPERM VPDI VPOPCT VRP VREP VREPI VSCEF VSCEG VSEL VSDP VSRP VSRPR VSL VSLB VSLD VSLDB VSRA VSRAB VSRD VSRL VSRLB VSEG VST VSTEBRH VSTEBRF VSTEBRG VSTBR VSTEH VSTEF VSTEG VSTEB VSTER VSTM VSTRL VSTRLR VSTL VSTRC VSTRS VS VSCBI VSP VSBCBI VSBI VSUMG VSUMQ VSUM VTP VTM VUPH VUPLH VUPLL VUPL VUPKZ VUPKZH VUPKZL ZAP )
func (Op) String ¶
type Reg ¶
type Reg uint16
A Reg is a single register. The zero value means R0, not the absence of a register. It also includes special registers.
const ( R0 Reg = iota R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 )
func (Reg) IsArg ¶
func (Reg) IsArg()
func (Reg) String ¶
type RegIm12 ¶
type RegIm12 uint16
RegIm12 represents an 12-bit Register immediate number.
func (RegIm12) IsArg ¶
func (RegIm12) IsArg()
func (RegIm12) String ¶
type RegIm16 ¶
type RegIm16 uint16
RegIm16 represents an 16-bit Register immediate number.
func (RegIm16) IsArg ¶
func (RegIm16) IsArg()
func (RegIm16) String ¶
type RegIm24 ¶
type RegIm24 uint32
RegIm24 represents an 24-bit Register immediate number.
func (RegIm24) IsArg ¶
func (RegIm24) IsArg()
func (RegIm24) String ¶
type RegIm32 ¶
type RegIm32 uint32
RegIm32 represents an 32-bit Register immediate number.
func (RegIm32) IsArg ¶
func (RegIm32) IsArg()
func (RegIm32) String ¶
type Sign16 ¶
type Sign16 int16
Sign16 represents an 16-bit signed immediate number.
func (Sign16) IsArg ¶
func (Sign16) IsArg()
func (Sign16) String ¶
type Sign32 ¶
type Sign32 int32
Sign32 represents an 32-bit signed immediate number.
func (Sign32) IsArg ¶
func (Sign32) IsArg()
func (Sign32) String ¶
type Sign8 ¶
type Sign8 int8
Sign8 represents an 8-bit signed immediate number.
func (Sign8) IsArg ¶
func (Sign8) IsArg()
func (Sign8) String ¶
type VReg ¶
type VReg uint8
const ( V0 VReg = iota V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 V27 V28 V29 V30 V31 )
func (VReg) IsArg ¶
func (VReg) IsArg()
func (VReg) String ¶
Source Files ¶
decode.go field.go gnu.go inst.go plan9.go tables.go
- Version
- v0.14.0 (latest)
- Published
- Jan 28, 2025
- Platform
- linux/amd64
- Imports
- 5 packages
- Last checked
- 1 month ago –
Tools for package owners.