978 lines
22 KiB
Plaintext
978 lines
22 KiB
Plaintext
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
; ;
|
||
|
; Copyright 2001, 2011 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: jsb xfer.xf_callb
|
||
|
brb jmp.1
|
||
|
OC_CALL-LONG: jsb xfer.xf_calll
|
||
|
jmp jmp.1
|
||
|
OC_CALL-WORD: jsb xfer.xf_callw
|
||
|
brw jmp.1
|
||
|
OC_CALLSP-BYTE: jsb xfer.xf_callspb
|
||
|
brb jmp.1
|
||
|
OC_CALLSP-LONG: jsb xfer.xf_callspl
|
||
|
jmp jmp.1
|
||
|
OC_CALLSP-WORD: 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.4
|
||
|
pushl val.3
|
||
|
pushl val.2
|
||
|
pushl #0
|
||
|
jsb xfer.xf_exfun
|
||
|
OC_EXFUN: irepab 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_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_FNZCHAR: irepl val.2
|
||
|
pushab val.0
|
||
|
calls val.1,xfer.xf_fnzchar
|
||
|
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_FNZEXTRACT: pushab val.0
|
||
|
pushab val.1
|
||
|
pushl val.2
|
||
|
pushl val.3
|
||
|
calls #4,xfer.xf_fnzextract
|
||
|
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_FNZFIND: pushab val.0
|
||
|
pushl val.3
|
||
|
pushab val.2
|
||
|
pushab val.1
|
||
|
calls #4,xfer.xf_fnzfind
|
||
|
OC_FNFNUMBER: pushab val.0
|
||
|
pushab val.2
|
||
|
pushab val.1
|
||
|
calls #3,xfer.xf_fnfnumber
|
||
|
OC_FNGET: movab val.1,r1
|
||
|
movab val.0,r0
|
||
|
jsb xfer.xf_fnget
|
||
|
OC_FNGET2: pushab val.2
|
||
|
pushab val.1
|
||
|
pushab val.0
|
||
|
calls #3,xfer.xf_fnget2
|
||
|
OC_FNGVGET: pushab val.1
|
||
|
pushab val.0
|
||
|
calls #2,xfer.xf_fngvget
|
||
|
OC_FNGVGET1: pushab val.0
|
||
|
calls #1,xfer.xf_fngvget1
|
||
|
OC_FNGVGET2: pushab val.2
|
||
|
pushab val.1
|
||
|
pushab val.0
|
||
|
calls #3,xfer.xf_fngvget2
|
||
|
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_FNZJ2: pushab val.0
|
||
|
pushl val.2
|
||
|
pushab val.1
|
||
|
calls #3,xfer.xf_fnzj2
|
||
|
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_FNZLENGTH: pushab val.0
|
||
|
pushab val.1
|
||
|
calls #2,xfer.xf_fnzlength
|
||
|
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_FNZP1: pushab val.0
|
||
|
pushl val.3
|
||
|
pushl val.2
|
||
|
pushab val.1
|
||
|
calls #4,xfer.xf_fnzp1
|
||
|
OC_FNZPIECE: pushab val.0
|
||
|
pushl val.4
|
||
|
pushl val.3
|
||
|
pushab val.2
|
||
|
pushab val.1
|
||
|
calls #5,xfer.xf_fnzpiece
|
||
|
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_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_FNVIEW: irepab val.2
|
||
|
pushab val.0
|
||
|
calls val.1,xfer.xf_fnview
|
||
|
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_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_FNZFILE: pushab val.0
|
||
|
pushab val.2
|
||
|
pushab val.1
|
||
|
calls #3,xfer.xf_fnzfile
|
||
|
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_FNZJOBEXAM: pushab val.0
|
||
|
pushab val.1
|
||
|
calls #2,xfer.xf_fnzjobexam
|
||
|
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_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_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_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_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: jsb xfer.xf_forlcldob
|
||
|
brb jmp.1
|
||
|
OC_FORLCLDO-LONG: jsb xfer.xf_forlcldol
|
||
|
jmp jmp.1
|
||
|
OC_FORLCLDO-WORD: 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]
|
||
|
pushab val.1 ; r->operand[0]
|
||
|
pushab val.0 ; result of $NAME
|
||
|
jsb xfer.xf_indfnname
|
||
|
OC_INDFUN: pushab val.0
|
||
|
pushl val.2
|
||
|
pushab val.1
|
||
|
jsb xfer.xf_indfun
|
||
|
OC_INDGET: pushab val.2
|
||
|
pushab val.1
|
||
|
pushab val.0
|
||
|
jsb xfer.xf_indget
|
||
|
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_INDNAME: irepab val.2
|
||
|
pushab val.0
|
||
|
calls val.1,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
|
||
|
jsb 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.1
|
||
|
jsb xfer.xf_iretmval
|
||
|
OC_ISFORMAL: jsb xfer.xf_isformal
|
||
|
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_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_FNPOPULATION: pushab val.0
|
||
|
pushab val.2
|
||
|
pushab val.1
|
||
|
calls #3,xfer.xf_fnpopulation
|
||
|
OC_FNZPOPULATION: pushab val.0
|
||
|
pushab val.2
|
||
|
pushab val.1
|
||
|
calls #3,xfer.xf_fnzpopulation
|
||
|
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_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_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_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_ZTSTART: calls #0,xfer.xf_ztstart
|
||
|
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_INDMERGE: pushab val.1
|
||
|
pushab val.2
|
||
|
jsb xfer.xf_indmerge
|
||
|
OC_M_SRCHINDX: irepab val.2
|
||
|
calls val.1,xfer.xf_m_srchindx
|
||
|
movl r0,addr.0
|
||
|
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_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_FNZWIDTH: pushab val.0 ; destination mval
|
||
|
pushab val.1 ; string
|
||
|
calls #2,xfer.xf_fnzwidth
|
||
|
OC_ZTRIGGER: calls #0,xfer.xf_ztrigger
|
||
|
OC_ZWRITESVN: pushl val.1
|
||
|
calls #1,xfer.xf_zwritesvn
|
||
|
OC_RFRSHINDX: pushl val.2
|
||
|
pushl val.1
|
||
|
calls #2,xfer.xf_rfrshindx
|
||
|
movl r0,addr.0
|
||
|
OC_SAVPUTINDX: irepab val.2
|
||
|
calls val.1,xfer.xf_savputindx
|
||
|
movl r0,addr.0
|
||
|
OC_FORFREEINDX: calls #0,xfer.xf_forfreeindx
|
||
|
OC_FORNESTLVL: pushl val.1
|
||
|
calls #1,xfer.xf_fornestlvl
|