fis-gtm/sr_unix/ttt.txt

1034 lines
24 KiB
Plaintext

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;
; Copyright 2001, 2013 Fidelity Information Services, Inc ;
; ;
; This source code contains the intellectual property ;
; of its copyright holder(s), and is made available ;
; under a license. If you do not know the terms of ;
; the license, please stop and do not read further. ;
; ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;This table defines the intermediate code (vax code) generated by an opcode.
;It drives tttgen.m to generate ttt.c.
;There are multiple versions of this file by platform family and
;changes to one should trigger review and likely changes to the others.
;The format is OC_<opcode name>:<tabs>list of vax instructions,one to a line.
;The opcode must have a corresponding entry in opcode_def.h
OC_ADD: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_add
OC_BINDPARM: irepl val.2
calls val.1,xfer.xf_bindparm
OC_BOOLFINI: incl val.1
OC_BOOLINIT: clrl val.0
OC_BREAK: jsb xfer.xf_break
OC_CALL-BYTE: pushl val.2
jsb xfer.xf_callb
brb jmp.1
OC_CALL-LONG: pushl val.2
jsb xfer.xf_calll
jmp jmp.1
OC_CALL-WORD: pushl val.2
jsb xfer.xf_callw
brw jmp.1
OC_CALLSP-BYTE: pushl val.2
jsb xfer.xf_callspb
brb jmp.1
OC_CALLSP-LONG: pushl val.2
jsb xfer.xf_callspl
jmp jmp.1
OC_CALLSP-WORD: pushl val.2
jsb xfer.xf_callspw
brw jmp.1
OC_CAT: irepab val.2
pushab val.0
calls val.1,xfer.xf_cat
OC_CLOSE: pushab val.2
pushab val.1
calls #2,xfer.xf_close
OC_CLRTEST: bicb2 #1,r10
jsb xfer.xf_dt_false
OC_CLRALSVARS: pushab val.1
calls #1,xfer.xf_clralsvars
OC_COBOOL-MINT: tstl val.1
OC_COBOOL-MVAL: movab val.1,r1
jsb xfer.xf_mval2bool
OC_COMINT-MVAL: movab val.1,r1
jsb xfer.xf_mval2mint
movl r0,val.0
OC_COMMARG: pushl val.2
pushab val.1
jsb xfer.xf_commarg
OC_COMVAL-MINT: movab val.0,r0
movl val.1,r1
jsb xfer.xf_mint2mval
OC_CONUM: movab val.1,r1
jsb xfer.xf_mval2num
OC_CONTAIN: movab val.1,r0
movab val.2,r1
jsb xfer.xf_contain
OC_CURRHD: movl (ap),addr.0
OC_CURRTN: movab val.0,r1
jsb xfer.xf_currtn
OC_CVTPARM: pushab val.0
pushab val.2
pushl val.1
calls #3,xfer.xf_cvtparm
OC_DIV: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_div
OC_EQU: movab val.2,r1
movab val.1,r0
jsb xfer.xf_equ
OC_EQUNUL: movab val.1,r0
jsb xfer.xf_equnul
OC_EXCAL: irepab val.5
pushl val.4
pushl val.3
pushl val.2
pushl #0
jsb xfer.xf_exfun
OC_EXFUN: irepab val.5
pushl val.4
pushl val.3
pushl val.2
pushab val.0
jsb xfer.xf_exfun
OC_EXFUNRET: pushab val.1
calls #1,xfer.xf_exfunret
OC_EXFUNRETALS: pushab val.1
calls #1,xfer.xf_exfunretals
OC_EXTCALL: pushab val.2
pushab val.1
jsb xfer.xf_extcall
OC_EXTEXCAL: irepab val.5
pushl val.4
pushl val.3
pushl #0
pushab val.2
pushab val.1
jsb xfer.xf_extexfun
OC_EXTEXFUN: irepab val.5
pushl val.4
pushl val.3
pushab val.0
pushab val.2
pushab val.1
jsb xfer.xf_extexfun
OC_EXTJMP: pushab val.2
pushab val.1
jsb xfer.xf_extjmp
OC_EXP: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_exp
OC_FETCH: irepl val.2
calls val.1,xfer.xf_fetch
OC_FGNCAL: irepab val.6
pushl val.5
pushl val.4
pushab val.3
pushab val.2
pushl #0
calls val.1,xfer.xf_fnfgncal
OC_FNASCII: pushab val.0
pushab val.1
pushl val.2
calls #3,xfer.xf_fnascii
OC_FNCHAR: irepl val.2
pushab val.0
calls val.1,xfer.xf_fnchar
OC_FNDATA: pushab val.0
pushab val.1
calls #2,xfer.xf_fndata
OC_FNEXTRACT: pushab val.0
pushab val.1
pushl val.2
pushl val.3
calls #4,xfer.xf_fnextract
OC_FNFGNCAL: irepab val.6
pushl val.5
pushl val.4
pushab val.3
pushab val.2
pushab val.0
calls val.1,xfer.xf_fnfgncal
OC_FNFIND: pushab val.0
pushl val.3
pushab val.2
pushab val.1
calls #4,xfer.xf_fnfind
OC_FNFNUMBER: pushab val.0
pushl val.4
pushl val.3
pushab val.2
pushab val.1
calls #5,xfer.xf_fnfnumber
OC_FNGET: movab val.1,r1
movab val.0,r0
jsb xfer.xf_fnget
OC_FNGET2: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_fnget2
OC_FNGVGET: pushab val.0
calls #1,xfer.xf_fngvget
OC_FNGVGET1: pushab val.0
calls #1,xfer.xf_fngvget1
OC_FNGET1: pushab val.0
pushab val.1
calls #2,xfer.xf_fnget1
OC_FNINCR: pushab val.0 ; result of $INCR
pushab val.2 ; r->operand[1] = increment
pushab val.1 ; r->operand[0] = local-variable to increment
calls #3,xfer.xf_fnincr
OC_FNJ2: pushab val.0
pushl val.2
pushab val.1
calls #3,xfer.xf_fnj2
OC_FNJ3: pushab val.0
pushl val.3
pushl val.2
pushab val.1
calls #4,xfer.xf_fnj3
OC_FNLENGTH: pushab val.0
pushab val.1
calls #2,xfer.xf_fnlength
OC_FNLVNAME: pushab val.0
pushl val.2
pushab val.1
calls #3,xfer.xf_fnlvname
OC_FNLVNAMEO2: pushab val.2
pushab val.0
pushab val.1
calls #3,xfer.xf_fnlvnameo2
OC_FNLVPRVNAME: pushab val.0
pushab val.1
calls #2,xfer.xf_fnlvprvname
OC_FNNAME: irepab val.4
pushab val.1 ; r->operand[0]
pushl val.3
pushab val.0 ; result of $NAME
calls val.2,xfer.xf_fnname
OC_FNNEXT: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_fnnext
OC_FNO2: pushab val.3
pushab val.0
pushab val.2
pushab val.1
calls #4,xfer.xf_fno2
OC_FNORDER: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_fnorder
OC_FNP1: pushab val.0
pushl val.3
pushl val.2
pushab val.1
calls #4,xfer.xf_fnp1
OC_FNPIECE: pushab val.0
pushl val.4
pushl val.3
pushab val.2
pushab val.1
calls #5,xfer.xf_fnpiece
OC_FNPOPULATION: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_fnpopulation
OC_FNQLENGTH: pushab val.0
pushab val.1
calls #2,xfer.xf_fnqlength
OC_FNQSUBSCR: pushab val.0
pushl val.2
pushab val.1
calls #3,xfer.xf_fnqsubscript
OC_FNQUERY: irepab val.3
pushab val.2
pushab val.0
calls val.1,xfer.xf_fnquery
OC_FNRANDOM: pushab val.0
pushl val.1
calls #2,xfer.xf_fnrandom
OC_FNREVERSE: pushab val.0
pushab val.1
calls #2,xfer.xf_fnreverse
OC_FNSTACK1: pushab val.0
pushl val.1
calls #2,xfer.xf_fnstack1
OC_FNSTACK2: pushab val.0
pushab val.2
pushl val.1
calls #3,xfer.xf_fnstack2
OC_FNTEXT: pushab val.0
pushab val.3
pushl val.2
pushab val.1
calls #4,xfer.xf_fntext
OC_FNTRANSLATE: pushab val.0
pushab val.3
pushab val.2
pushab val.1
calls #4,xfer.xf_fntranslate
OC_FNVIEW: irepab val.2
pushab val.0
calls val.1,xfer.xf_fnview
OC_FNZASCII: pushab val.0
pushab val.1
pushl val.2
calls #3,xfer.xf_fnzascii
OC_FNZAHANDLE: pushab val.0
pushab val.1
calls #2,xfer.xf_fnzahandle
OC_FNZBITAND: pushab val.2
pushab val.1
pushab val.0
calls #3,xfer.xf_fnzbitand
OC_FNZBITCOUN: pushab val.1
pushab val.0
calls #2,xfer.xf_fnzbitcoun
OC_FNZBITFIND: pushl val.3
pushl val.2
pushab val.1
pushab val.0
calls #4,xfer.xf_fnzbitfind
OC_FNZBITGET: pushl val.2
pushab val.1
pushab val.0
calls #3,xfer.xf_fnzbitget
OC_FNZBITLEN: pushab val.1
pushab val.0
calls #2,xfer.xf_fnzbitlen
OC_FNZBITNOT: pushab val.1
pushab val.0
calls #2,xfer.xf_fnzbitnot
OC_FNZBITOR: pushab val.2
pushab val.1
pushab val.0
calls #3,xfer.xf_fnzbitor
OC_FNZBITSET: pushl val.3
pushl val.2
pushab val.1
pushab val.0
calls #4,xfer.xf_fnzbitset
OC_FNZBITSTR: pushl val.2
pushl val.1
pushab val.0
calls #3,xfer.xf_fnzbitstr
OC_FNZBITXOR: pushab val.2
pushab val.1
pushab val.0
calls #3,xfer.xf_fnzbitxor
OC_FNZCALL: irepab val.2
pushab val.0
calls val.1,xfer.xf_fnzcall
OC_FNZCHAR: irepl val.2
pushab val.0
calls val.1,xfer.xf_fnzchar
OC_FNZCONVERT2: pushab val.0 ; destination mval
pushab val.2 ; "U"/"L"/"T"
pushab val.1 ; string
calls #3,xfer.xf_fnzconvert2
OC_FNZCONVERT3: pushab val.0 ; Destination mval
pushab val.3 ; target chset
pushab val.2 ; src chset
pushab val.1 ; string
calls #4,xfer.xf_fnzconvert3
OC_FNZDATA: pushab val.0
pushab val.1
calls #2,xfer.xf_fnzdata
OC_FNZDATE: pushab val.0
pushab val.4
pushab val.3
pushab val.2
pushab val.1
calls #5,xfer.xf_fnzdate
OC_FNZEXTRACT: pushab val.0
pushab val.1
pushl val.2
pushl val.3
calls #4,xfer.xf_fnzextract
OC_FNZFILE: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_fnzfile
OC_FNZFIND: pushab val.0
pushl val.3
pushab val.2
pushab val.1
calls #4,xfer.xf_fnzfind
OC_FNZGETDVI: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_fngetdvi
OC_FNZGETJPI: pushab val.0
pushab val.2
pushl val.1
calls #3,xfer.xf_fngetjpi
OC_FNZGETLKI: pushab val.0
pushab val.2
pushl val.1
calls #3,xfer.xf_fngetlki
OC_FNZGETSYI: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_fngetsyi
OC_FNZJ2: pushab val.0
pushl val.2
pushab val.1
calls #3,xfer.xf_fnzj2
OC_FNZJOBEXAM: pushab val.0
pushab val.1
calls #2,xfer.xf_fnzjobexam
OC_FNZLENGTH: pushab val.0
pushab val.1
calls #2,xfer.xf_fnzlength
OC_FNZLKID: pushab val.0
pushl val.1
calls #2,xfer.xf_fnzlkid
OC_FNZM: pushab val.0
pushl val.1
calls #2,xfer.xf_fnzm
OC_FNZP1: pushab val.0
pushl val.3
pushl val.2
pushab val.1
calls #4,xfer.xf_fnzp1
OC_FNZPARSE: pushab val.0
pushab val.5
pushab val.4
pushab val.3
pushab val.2
pushab val.1
calls #6,xfer.xf_fnzparse
OC_FNZPID: pushab val.0
pushl val.1
calls #2,xfer.xf_fnzpid
OC_FNZPIECE: pushab val.0
pushl val.4
pushl val.3
pushab val.2
pushab val.1
calls #5,xfer.xf_fnzpiece
OC_FNZPOPULATION: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_fnzpopulation
OC_FNZPREVIOUS: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_fnzprevious
OC_FNZPRIV: pushab val.0
pushab val.1
calls #2,xfer.xf_fnzpriv
OC_FNZQGBLMOD: pushab val.0
calls #1,xfer.xf_fnzqgblmod
OC_FNZSEA: pushab val.0
pushl val.2
pushab val.1
calls #3,xfer.xf_fnzsearch
OC_FNZSETPRV: pushab val.0
pushab val.1
calls #2,xfer.xf_fnzsetprv
OC_FNZSIGPROC: pushab val.0
pushl val.2
pushl val.1
calls #3,xfer.xf_fnzsigproc
OC_FNZSUBSTR: pushab val.0 ; Destination mval
pushl val.3 ; max byte length
pushl val.2 ; starting character position
pushab val.1 ; string
calls #4,xfer.xf_fnzsubstr
OC_FNZTRANSLATE: pushab val.0
pushab val.3
pushab val.2
pushab val.1
calls #4,xfer.xf_fnztranslate
OC_FNZTRIGGER: pushab val.0
pushab val.3
pushab val.2
pushab val.1
calls #4,xfer.xf_fnztrigger
OC_FNZTRNLNM: pushab val.0
pushab val.6
pushab val.5
pushab val.4
pushl val.3
pushab val.2
pushab val.1
calls #7,xfer.xf_fnztrnlnm
OC_FNZWIDTH: pushab val.0 ; destination mval
pushab val.1 ; string
calls #2,xfer.xf_fnzwidth
OC_FOLLOW: movab val.1,r0
movab val.2,r1
jsb xfer.xf_follow
OC_FORCENUM: movab val.0,r0
movab val.1,r1
jsb xfer.xf_forcenum
OC_FORCHK1: jsb xfer.xf_restartpc
jsb xfer.xf_forchk1
OC_FORINIT: pushab val.3
pushab val.2
pushab val.1
jsb xfer.xf_forinit
OC_FORLCLDO-BYTE: pushl val.2
jsb xfer.xf_forlcldob
brb jmp.1
OC_FORLCLDO-LONG: pushl val.2
jsb xfer.xf_forlcldol
jmp jmp.1
OC_FORLCLDO-WORD: pushl val.2
jsb xfer.xf_forlcldow
brw jmp.1
OC_FORLOOP-BYTE:jsb xfer.xf_restartpc
pushab jmp.1
pushab val.4
pushab val.3
pushab val.2
jsb xfer.xf_forloop
OC_FORLOOP-LONG:jsb xfer.xf_restartpc
pushab jmp.1
pushab val.4
pushab val.3
pushab val.2
jsb xfer.xf_forloop
OC_FORLOOP-WORD:jsb xfer.xf_restartpc
pushab jmp.1
pushab val.4
pushab val.3
pushab val.2
jsb xfer.xf_forloop
OC_GETINDX: irepab val.2
calls val.1,xfer.xf_getindx
movl r0,addr.0
OC_GETTRUTH: movab val.0,r1
jsb xfer.xf_gettruth
OC_GVDATA: pushab val.0
calls #1,xfer.xf_gvdata
OC_GVEXTNAM: irepab val.2
calls val.1,xfer.xf_gvextnam
OC_GVGET: pushab val.0
calls #1,xfer.xf_gvget
OC_GVINCR: pushab val.0 ; result of $INCR
pushab val.2 ; r->operand[1] = increment (global-variable to increment is gv_currkey so no operand[0])
calls #2,xfer.xf_gvincr
OC_GVKILL: calls #0,xfer.xf_gvkill
OC_GVNAKED: irepab val.2
calls val.1,xfer.xf_gvnaked
OC_GVNAME: irepab val.2
calls val.1,xfer.xf_gvname
OC_GVNEXT: pushab val.0
calls #1,xfer.xf_gvnext
OC_GVO2: pushab val.1
pushab val.0
calls #2,xfer.xf_gvo2
OC_GVORDER: pushab val.0
calls #1,xfer.xf_gvorder
OC_GVPUT: pushab val.1
calls #1,xfer.xf_gvput
OC_GVQUERY: pushab val.0
calls #1,xfer.xf_gvquery
OC_GVRECTARG: pushab val.1
calls #1,xfer.xf_gvrectarg
OC_GVSAVTARG: pushab val.0
calls #1,xfer.xf_gvsavtarg
OC_GVZWITHDRAW: calls #0,xfer.xf_gvzwithdraw
OC_GVZWRITE: jsb xfer.xf_restartpc
irepab val.4
pushl val.3
pushl val.2
calls val.1,xfer.xf_gvzwrite
OC_HALT: calls #0,xfer.xf_halt
OC_HANG: jsb xfer.xf_restartpc
pushab val.1
calls #1,xfer.xf_hang
OC_HARDRET: jsb xfer.xf_hardret
OC_IDIV: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_idiv
OC_IGETSRC: pushab val.0
calls #1,xfer.xf_igetsrc
OC_INDDEVPARMS: pushab val.0
pushl val.2
pushab val.1
jsb xfer.xf_inddevparms
OC_INDFNNAME: pushab val.2 ; r->operand[1] = depth
pushab val.1 ; r->operand[0] = name
pushab val.0 ; r->dst
jsb xfer.xf_indfnname
OC_INDFUN: pushab val.0
pushl val.2
pushab val.1
jsb xfer.xf_indfun
OC_INDGLVN: pushab val.0
pushab val.1
jsb xfer.xf_indglvn
OC_INDINCR: pushab val.1 ; r->operand[0] = indirection expression
pushab val.2 ; r->operand[1] = increment (ILIT)
pushab val.0 ; r->dst
jsb xfer.xf_indincr
OC_INDLVADR: pushab val.1
jsb xfer.xf_indlvadr
movl r0,addr.0
OC_INDLVARG: pushab val.0
pushab val.1
jsb xfer.xf_indlvarg
OC_INDMERGE: pushab val.1
pushab val.2
jsb xfer.xf_indmerge
OC_INDNAME: pushab val.2
pushab val.1
pushab val.0
calls #3,xfer.xf_indname
OC_INDLVNAMADR: pushab val.1
jsb xfer.xf_indlvnamadr
movl r0,addr.0
OC_INDO2: pushab val.2
pushab val.1
pushab val.0
calls #3,xfer.xf_indo2
OC_INDPAT: pushab val.0
pushab val.1
jsb xfer.xf_indpat
OC_INDRZSHOW: pushab val.2
pushab val.1
jsb xfer.xf_indrzshow
OC_INDSET: pushab val.2
pushab val.1
jsb xfer.xf_indset
OC_INDTEXT: pushab val.0
pushab val.3
pushl val.2
pushab val.1
jsb xfer.xf_indtext
OC_IOCONTROL: jsb xfer.xf_restartpc
irepab val.2
calls val.1,xfer.xf_iocontrol
OC_IRETMVAD: movab val.1,r1
jsb xfer.xf_iretmvad
OC_IRETMVAL: pushab val.2
pushab val.1
jsb xfer.xf_iretmval
OC_JMP-BYTE: brb jmp.1
OC_JMP-LONG: jmp jmp.1
OC_JMP-WORD: brw jmp.1
OC_JMPAT: jmp val.1
OC_JMPEQU-BYTE: beql jmp.1
OC_JMPEQU-LONG: bneq #6
jmp jmp.1
OC_JMPEQU-WORD: bneq #3
brw jmp.1
OC_JMPGEQ-BYTE: bgeq jmp.1
OC_JMPGEQ-LONG: blss #6
jmp jmp.1
OC_JMPGEQ-WORD: blss #3
brw jmp.1
OC_JMPGTR-BYTE: bgtr jmp.1
OC_JMPGTR-LONG: bleq #6
jmp jmp.1
OC_JMPGTR-WORD: bleq #3
brw jmp.1
OC_JMPLEQ-BYTE: bleq jmp.1
OC_JMPLEQ-LONG: bgtr #6
jmp jmp.1
OC_JMPLEQ-WORD: bgtr #3
brw jmp.1
OC_JMPLSS-BYTE: blss jmp.1
OC_JMPLSS-LONG: bgeq #6
jmp jmp.1
OC_JMPLSS-WORD: bgeq #3
brw jmp.1
OC_JMPNEQ-BYTE: bneq jmp.1
OC_JMPNEQ-LONG: bneq #6
jmp jmp.1
OC_JMPNEQ-WORD: beql #3
brw jmp.1
OC_JMPTCLR-BYTE: blbc r10,jmp.1
OC_JMPTCLR-LONG: blbs r10,#6
jmp jmp.1
OC_JMPTCLR-WORD: blbs r10,#3
brw jmp.1
OC_JMPTSET-BYTE: blbs r10,jmp.1
OC_JMPTSET-LONG: blbc r10,#6
jmp jmp.1
OC_JMPTSET-WORD: blbc r10,#3
brw jmp.1
OC_JOB: jsb xfer.xf_restartpc
irepab val.7
pushl val.6
pushab val.5
pushab val.4
pushl val.3
pushab val.2
calls val.1,xfer.xf_job
OC_KILL: pushab val.1
calls #1,xfer.xf_kill
OC_KILLALIAS: pushl val.1
calls #1,xfer.xf_killalias
OC_KILLALL: calls #0,xfer.xf_killall
OC_KILLALIASALL: calls #0,xfer.xf_killaliasall
OC_LABADDR: pushl val.2
pushab val.1
pushab val.3
calls #3,xfer.xf_labaddr
movl r0,addr.0
OC_LCKDECR: pushl val.1
calls #1,xfer.xf_lckdecr
OC_LCKINCR: pushl val.1
calls #1,xfer.xf_lckincr
OC_LDADDR-BYTE: movab jmp.1,addr.0
OC_LDADDR-LONG: movab jmp.1,addr.0
OC_LDADDR-WORD: movab jmp.1,addr.0
OC_LINEFETCH: irepl val.2
pushl val.1
jsb xfer.xf_linefetch
OC_LINESTART: jsb xfer.xf_linestart
OC_LKEXTNAME: irepab val.4
pushab val.3
pushab val.2
calls val.1,xfer.xf_lkname
OC_LKINIT: calls #0,xfer.xf_lkinit
OC_LKNAME: irepab val.4
pushab val.3
pushl val.2
calls val.1,xfer.xf_lkname
OC_LOCK: pushl val.1
calls #1,xfer.xf_lock
OC_LVPATWRITE: jsb xfer.xf_restartpc
irepab val.3
pushl val.2
calls val.1,xfer.xf_lvpatwrite
OC_LVZWITHDRAW: pushab val.1
calls #1,xfer.xf_lvzwithdraw
OC_LVZWRITE: jsb xfer.xf_restartpc
irepab val.2
calls val.1,xfer.xf_lvzwrite
OC_M_SRCHINDX: irepab val.2
calls val.1,xfer.xf_m_srchindx
movl r0,addr.0
OC_MERGE: calls #0,xfer.xf_merge
OC_MERGE_GVARG: pushl #0
pushl val.1
calls #2,xfer.xf_merge_arg
OC_MERGE_LVARG: pushab val.2
pushl val.1
calls #2,xfer.xf_merge_arg
OC_MOD: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_flt_mod
OC_MUL: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_mul
OC_NEG: movab val.0,r0
movab val.1,r1
jsb xfer.xf_neg
OC_NEWINTRINSIC: pushl val.1
jsb xfer.xf_newintrinsic
OC_NEWVAR: pushl val.1
jsb xfer.xf_newvar
OC_NULLEXP: pushab val.0
calls #1,xfer.xf_nullexp
OC_NUMCMP: movab val.1,r0
movab val.2,r1
jsb xfer.xf_numcmp
OC_OPEN: jsb xfer.xf_restartpc
pushab val.4
pushl val.3
pushab val.2
pushab val.1
calls #4,xfer.xf_open
OC_PATTERN: movab val.1,r0
movab val.2,r1
jsb xfer.xf_pattern
OC_PUTINDX: irepab val.2
calls val.1,xfer.xf_putindx
movl r0,addr.0
OC_RDONE: jsb xfer.xf_restartpc
pushl val.1
pushab val.0
calls #2,xfer.xf_rdone
OC_READ: jsb xfer.xf_restartpc
pushl val.1
pushab val.0
calls #2,xfer.xf_read
OC_READFL: jsb xfer.xf_restartpc
pushl val.2
pushl val.1
pushab val.0
calls #3,xfer.xf_readfl
OC_RESTARTPC: jsb xfer.xf_restartpc
OC_RET: jsb xfer.xf_ret
OC_RETARG: movab val.1,r0
movl val.2,r1
jsb xfer.xf_retarg
OC_RHDADDR: pushab val.2
pushab val.1
calls #2,xfer.xf_rhdaddr
movl r0,addr.0
OC_RHDADDR1: pushl #0
pushab val.1
calls #2,xfer.xf_rhdaddr
movl r0,addr.0
; Note if OC_RTERROR call changes, linetail.c and eval_expr.c will also need
; to change due to it dereferencing the backpoints to get to the opcode.
OC_RTERROR: pushl val.2
pushl val.1
jsb xfer.xf_rterror
OC_SETALS2ALS: pushl val.1
pushab val.2
calls #2,xfer.xf_setals2als
OC_SETALSIN2ALSCT: pushab val.1
pushab val.2
calls #2,xfer.xf_setalsin2alsct
OC_SETALSCTIN2ALS: pushl val.1
pushab val.2
calls #2,xfer.xf_setalsctin2als
OC_SETALSCT2ALSCT: pushab val.1
pushab val.2
calls #2,xfer.xf_setalsct2alsct
OC_SETFNRETIN2ALS: pushl val.1
pushab val.2
calls #2,xfer.xf_setfnretin2als
OC_SETFNRETIN2ALSCT: pushab val.1
pushab val.2
calls #2,xfer.xf_setfnretin2alsct
OC_SETEXTRACT: pushab val.0
pushl val.3
pushl val.2
pushab val.4
pushab val.1
calls #5,xfer.xf_setextract
OC_SETP1: pushab val.0
pushl val.3
pushab val.4
pushl val.2
pushab val.1
calls #5,xfer.xf_setp1
OC_SETPIECE: pushab val.0
pushl val.4
pushl val.3
pushab val.5
pushab val.2
pushab val.1
calls #6,xfer.xf_setpiece
OC_SETTEST: bisb2 #1,r10
jsb xfer.xf_dt_true
OC_SETZBRK: pushl val.5
pushab val.4
pushl val.2
pushab val.1
pushab val.3
calls #5,xfer.xf_setzbrk
OC_SETZEXTRACT: pushab val.0
pushl val.3
pushl val.2
pushab val.4
pushab val.1
calls #5,xfer.xf_setzextract
OC_SETZP1: pushab val.0
pushl val.3
pushab val.4
pushl val.2
pushab val.1
calls #5,xfer.xf_setzp1
OC_SETZPIECE: pushab val.0
pushl val.4
pushl val.3
pushab val.5
pushab val.2
pushab val.1
calls #6,xfer.xf_setzpiece
OC_SORTS_AFTER: movab val.1,r0
movab val.2,r1
jsb xfer.xf_sorts_after
OC_SRCHINDX: irepab val.2
calls val.1,xfer.xf_srchindx
movl r0,addr.0
OC_STO: movab val.2,r1
movab val.1,r0
jsb xfer.xf_sto
OC_STOLIT: movc3 #16,val.2,val.1
OC_STOTEMP: movab val.1,r1
movab val.0,r0
jsb xfer.xf_sto
OC_SUB: pushab val.0
pushab val.2
pushab val.1
calls #3,xfer.xf_sub
OC_SVGET: pushab val.0
pushl val.1
calls #2,xfer.xf_svget
OC_PSVPUT: pushab val.2
pushl val.1
jsb xfer.xf_psvput
OC_SVPUT: pushab val.2
pushl val.1
calls #2,xfer.xf_svput
OC_TIMTRU: movl r0,r10
OC_TCOMMIT: jsb xfer.xf_tcommit
OC_TROLLBACK: pushl val.1
jsb xfer.xf_trollback
OC_TRESTART: pushl val.1
jsb xfer.xf_trestart
OC_TSTART: irepab val.4
pushl val.3
pushab val.2
pushl val.1
jsb xfer.xf_tstart
OC_UNLOCK: calls #0,xfer.xf_unlock
OC_USE: pushab val.2
pushab val.1
calls #2,xfer.xf_use
OC_VIEW: irepab val.2
calls val.1,xfer.xf_view
OC_VXCMPL: cmpl val.1,val.2
OC_WRITE: pushab val.1
calls #1,xfer.xf_write
OC_WTEOL: pushl val.1
calls #1,xfer.xf_wteol
OC_WTFF: calls #0,xfer.xf_wtff
OC_WTONE: pushl val.1
calls #1,xfer.xf_wtone
OC_WTTAB: pushl val.1
calls #1,xfer.xf_wttab
OC_XKILL: irepab val.2
calls val.1,xfer.xf_xkill
OC_XNEW: irepab val.2
pushl val.1
jsb xfer.xf_xnew
OC_ZALLOCATE: pushl val.1
calls #1,xfer.xf_zallocate
OC_ZATTACH: jsb xfer.xf_restartpc
pushab val.1
calls #1,xfer.xf_zattach
OC_ZCOMPILE: pushl val.2
pushab val.1
calls #2,xfer.xf_zcompile
OC_ZCONT: jsb xfer.xf_zcont
OC_ZDEALLOCATE: pushl val.1
calls #1,xfer.xf_zdeallocate
OC_ZEDIT: jsb xfer.xf_restartpc
pushab val.2
pushab val.1
calls #2,xfer.xf_zedit
OC_ZG1: pushl val.1
jsb xfer.xf_zg1
OC_ZGOTO: pushl val.1
pushl val.4
pushab val.3
pushab val.2
jsb xfer.xf_zgoto
OC_ZHALT: pushab val.1
calls #1,xfer.xf_zhalt
OC_ZHELP: pushab val.2
pushab val.1
calls #2,xfer.xf_zhelp
OC_ZLINK: pushab val.2
pushab val.1
calls #2,xfer.xf_zlink
OC_ZMESS: irepab val.3
pushl val.2
calls val.1,xfer.xf_zmess
OC_ZPREVIOUS: pushab val.0
calls #1,xfer.xf_zprevious
OC_ZPRINT: jsb xfer.xf_restartpc
pushl val.5
pushab val.4
pushl val.3
pushab val.2
pushab val.1
calls #5,xfer.xf_zprint
OC_ZSHOW: jsb xfer.xf_restartpc
pushl #0
pushl val.2
pushab val.1
calls #3,xfer.xf_zshow
OC_ZSHOWLOC: jsb xfer.xf_restartpc
pushab val.3
pushl val.2
pushab val.1
calls #3,xfer.xf_zshow
OC_ZSTEP: pushl #0
pushl val.1
calls #2,xfer.xf_zstep
jsb xfer.xf_zcont
OC_ZSTEPACT: pushab val.2
pushl val.1
calls #2,xfer.xf_zstep
jsb xfer.xf_zcont
OC_ZSYSTEM: jsb xfer.xf_restartpc
pushab val.1
calls #1,xfer.xf_zsystem
OC_ZTCOMMIT: pushl val.1
calls #1,xfer.xf_ztcommit
OC_ZTRIGGER: calls #0,xfer.xf_ztrigger
OC_ZTSTART: calls #0,xfer.xf_ztstart
OC_ZWRITESVN: pushl val.1
calls #1,xfer.xf_zwritesvn
OC_FNZWRITE: pushab val.0 ; destination mval
pushab val.1 ; string
calls #2,xfer.xf_fnzwrite
OC_IGETDST: calls #0,xfer.xf_igetdst
movl r0,addr.0
OC_INDGET1: pushab val.0
pushab val.1
calls #2,xfer.xf_indget1
OC_GLVNPOP: pushab val.1
calls #1,xfer.xf_glvnpop
OC_GLVNSLOT: pushl val.1
calls #1,xfer.xf_glvnslot
movl r0,addr.0
OC_INDSAVGLVN: pushl val.3
pushab val.2
pushab val.1
jsb xfer.xf_indsavglvn
OC_INDSAVLVN: pushab val.2
pushab val.1
jsb xfer.xf_indsavlvn
OC_RFRSHLVN: pushl val.2
pushab val.1
calls #2,xfer.xf_rfrshlvn
movl r0,addr.0
OC_SAVGVN: irepab val.2
calls val.1,xfer.xf_savgvn
OC_SAVLVN: irepab val.2
calls val.1,xfer.xf_savlvn
OC_SHARESLOT: pushl val.2
pushab val.1
calls #2,xfer.xf_shareslot
OC_STOGLVN: pushab val.2
pushab val.1
calls #2,xfer.xf_stoglvn
OC_RFRSHGVN: pushl val.2
pushab val.1
calls #2,xfer.xf_rfrshgvn
OC_INDFNNAME2: pushab val.2
pushab val.1
pushab val.0
calls #3,xfer.xf_indfnname2
OC_INDGET2: pushab val.1
pushab val.0
calls #2,xfer.xf_indget2
OC_INDMERGE2: pushab val.1
calls #1,xfer.xf_indmerge2
OC_LITC: pushab val.1 ; opcode not in sr_unix_nsb/ttt or sr_vvms/ttt
pushab val.0
calls #2,xfer.xf_litc
OC_STOLITC: movc3 #16,val.2,val.1 ; opcode not in sr_unix_nsb/ttt or sr_vvms/ttt
pushab val.1
calls #1,xfer.xf_stolitc
OC_FNZPEEK: pushab val.0
pushab val.4
pushl val.3
pushl val.2
pushab val.1
calls #5,xfer.xf_fnzpeek