355 lines · 5.7 KB · Objective-C
RawDownload
movetab:= array [Mend]of{	Mas => array[Tend] of	{		Tadt =>		IMOVM,		Tadtpick =>	IMOVM,		Tarray =>	IMOVP,		Tbig =>		IMOVL,		Tbyte =>	IMOVB,		Tchan =>	IMOVP,		Treal =>	IMOVF,		Tint =>		IMOVW,		Tlist =>	IMOVP,		Tmodule =>	IMOVP,		Tref =>		IMOVP,		Tstring =>	IMOVP,		Ttuple =>	IMOVM,		Texception => IMOVM,		Tfix =>	IMOVW,		Tpoly =>	IMOVP, 		Tany =>		IMOVP, 		* =>		0	},	Mcons => array[Tend] of	{		Tadt =>		ICONSM,		Tadtpick =>	0,		Tarray =>	ICONSP,		Tbig =>		ICONSL,		Tbyte =>	ICONSB,		Tchan =>	ICONSP,		Treal =>	ICONSF,		Tint =>		ICONSW,		Tlist =>	ICONSP,		Tmodule =>	ICONSP,		Tref =>		ICONSP,		Tstring =>	ICONSP,		Ttuple =>	ICONSM,		Texception => ICONSM,		Tfix =>	ICONSW,		Tpoly =>	ICONSP, 		Tany =>		ICONSP, 		* =>		0	},	Mhd => array[Tend] of	{		Tadt =>		IHEADM,		Tadtpick =>	0,		Tarray =>	IHEADP,		Tbig =>		IHEADL,		Tbyte =>	IHEADB,		Tchan =>	IHEADP,		Treal =>	IHEADF,		Tint =>		IHEADW,		Tlist =>	IHEADP,		Tmodule =>	IHEADP,		Tref =>		IHEADP,		Tstring =>	IHEADP,		Ttuple =>	IHEADM,		Texception => IHEADM,		Tfix =>	IHEADW,		Tpoly =>	IHEADP, 		Tany =>		IHEADP, 		* =>		0	},	Mtl  => array[Tend] of	{		Tlist =>	ITAIL, 		* =>		0	},}; chantab := array[Tend] of{	Tadt =>		INEWCM,	Tadtpick =>	0,	Tarray =>	INEWCP,	Tbig =>		INEWCL,	Tbyte =>	INEWCB,	Tchan =>	INEWCP,	Treal =>	INEWCF,	Tint =>		INEWCW,	Tlist =>	INEWCP,	Tmodule =>	INEWCP,	Tref =>		INEWCP,	Tstring =>	INEWCP,	Ttuple =>	INEWCM,	Texception => INEWCM,	Tfix =>	INEWCW,	Tpoly =>	INEWCP, 	Tany =>		INEWCP, 	* =>	0}; opind := array[Tend] of{	Tbyte =>	1,	Tint =>		2,	Tbig =>		3,	Treal =>	4,	Tstring =>	5,	Tfix => 6, 	* =>		0}; disoptab := array[Oend+1] of{	# opcode			default	byte	word	big	real	string	fixed	Oadd =>		array[7] of	{0,	IADDB,	IADDW,	IADDL,	IADDF,	IADDC,	IADDW,},	Oaddas =>	array[7] of	{0,	IADDB,	IADDW,	IADDL,	IADDF,	IADDC,	IADDW,},	Oand =>		array[7] of	{0,	IANDB,	IANDW,	IANDL,	0,	0,	0,},	Oandas =>	array[7] of	{0,	IANDB,	IANDW,	IANDL,	0, 	0,	0,},	Odec =>		array[7] of	{0,	ISUBB,	ISUBW,	ISUBL,	ISUBF,	0,	ISUBW,},	Odiv =>		array[7] of	{0,	IDIVB,	IDIVW,	IDIVL,	IDIVF,	0,	IDIVX,},	Odivas =>	array[7] of	{0,	IDIVB,	IDIVW,	IDIVL,	IDIVF,	0,	IDIVX,},	Oeq =>		array[7] of	{IBEQW,	IBEQB,	IBEQW,	IBEQL,	IBEQF,	IBEQC,	IBEQW,},	Oexp =>	array[7] of	{0,	0,	IEXPW,	IEXPL,	IEXPF,	0,	0,},	Oexpas =>	array[7] of	{0,	0,	IEXPW,	IEXPL,	IEXPF,	0,	0,},	Ogeq =>		array[7] of	{0,	IBGEB,	IBGEW,	IBGEL,	IBGEF,	IBGEC,	IBGEW,},	Ogt =>		array[7] of	{0,	IBGTB,	IBGTW,	IBGTL,	IBGTF,	IBGTC,	IBGTW,},	Oinc =>		array[7] of	{0,	IADDB,	IADDW,	IADDL,	IADDF,	0,	IADDW,},	Oinds =>	array[7] of	{0,	0,	IINDC,	0,	0,	0,	0,},	Oindx =>	array[7] of	{0,	0,	IINDX,	0,	0,	0,	0,},	Olen =>		array[7] of	{ILENA,	0,	0,	0,	0,	ILENC,	0,},	Oleq =>		array[7] of	{0,	IBLEB,	IBLEW,	IBLEL,	IBLEF,	IBLEC,	IBLEW,},	Olsh =>		array[7] of	{0,	ISHLB,	ISHLW,	ISHLL,	0,	0,	0,},	Olshas =>	array[7] of	{0,	ISHLB,	ISHLW,	ISHLL,	0,	0,	0,},	Olt =>		array[7] of	{0,	IBLTB,	IBLTW,	IBLTL,	IBLTF,	IBLTC,	IBLTW,},	Omod =>		array[7] of	{0,	IMODB,	IMODW,	IMODL,	0,	0,	0,},	Omodas =>	array[7] of	{0,	IMODB,	IMODW,	IMODL,	0,	0,	0,},	Omul =>		array[7] of	{0,	IMULB,	IMULW,	IMULL,	IMULF,	0,	IMULX,},	Omulas =>	array[7] of	{0,	IMULB,	IMULW,	IMULL,	IMULF,	0,	IMULX,},	Oneg =>		array[7] of	{0,	0,	0,	0,	INEGF,	0,	0, },	Oneq =>		array[7] of	{IBNEW,	IBNEB,	IBNEW,	IBNEL,	IBNEF,	IBNEC,	IBNEW,},	Oor =>		array[7] of	{0,	IORB,	IORW,	IORL,	0,	0,	0,},	Ooras =>	array[7] of	{0,	IORB,	IORW,	IORL,	0,	0,	0,},	Orsh =>		array[7] of	{0,	ISHRB,	ISHRW,	ISHRL,	0,	0,	0,},	Orshas =>	array[7] of	{0,	ISHRB,	ISHRW,	ISHRL,	0,	0,	0,},	Oslice =>	array[7] of	{ISLICEA,0,	0,	0,	0,	ISLICEC,	0,},	Osub =>		array[7] of	{0,	ISUBB,	ISUBW,	ISUBL,	ISUBF,	0,	ISUBW,},	Osubas =>	array[7] of	{0,	ISUBB,	ISUBW,	ISUBL,	ISUBF,	0,	ISUBW,},	Oxor =>		array[7] of	{0,	IXORB,	IXORW,	IXORL,	0,	0,	0,},	Oxoras =>	array[7] of	{0,	IXORB,	IXORW,	IXORL,	0,	0,	0,},}; isbyteinst := array [256] of{	IMULB	=> 1,	ISUBB	=> 1,	IADDB	=> 1,	IDIVB	=> 1,	IORB	=> 1,	IXORB	=> 1,	ISHLB	=> 1,	ISHRB	=> 1,	IMODB	=> 1,	IANDB	=> 1,	IBEQB	=> 1,	IBNEB	=> 1,	IBLTB	=> 1,	IBLEB	=> 1,	IBGTB	=> 1,	IBGEB	=> 1, 	*	=> 0,}; instname := array[256] of{	"nop",	"alt",	"nbalt",	"goto",	"call",	"frame",	"spawn",	"runt",	"load",	"mcall",	"mspawn",	"mframe",	"ret",	"jmp",	"case",	"exit",	"new",	"newa",	"newcb",	"newcw",	"newcf",	"newcp",	"newcm",	"newcmp",	"send",	"recv",	"consb",	"consw",	"consp",	"consf",	"consm",	"consmp",	"headb",	"headw",	"headp",	"headf",	"headm",	"headmp",	"tail",	"lea",	"indx",	"movp",	"movm",	"movmp",	"movb",	"movw",	"movf",	"cvtbw",	"cvtwb",	"cvtfw",	"cvtwf",	"cvtca",	"cvtac",	"cvtwc",	"cvtcw",	"cvtfc",	"cvtcf",	"addb",	"addw",	"addf",	"subb",	"subw",	"subf",	"mulb",	"mulw",	"mulf",	"divb",	"divw",	"divf",	"modw",	"modb",	"andb",	"andw",	"orb",	"orw",	"xorb",	"xorw",	"shlb",	"shlw",	"shrb",	"shrw",	"insc",	"indc",	"addc",	"lenc",	"lena",	"lenl",	"beqb",	"bneb",	"bltb",	"bleb",	"bgtb",	"bgeb",	"beqw",	"bnew",	"bltw",	"blew",	"bgtw",	"bgew",	"beqf",	"bnef",	"bltf",	"blef",	"bgtf",	"bgef",	"beqc",	"bnec",	"bltc",	"blec",	"bgtc",	"bgec",	"slicea",	"slicela",	"slicec",	"indw",	"indf",	"indb",	"negf",	"movl",	"addl",	"subl",	"divl",	"modl",	"mull",	"andl",	"orl",	"xorl",	"shll",	"shrl",	"bnel",	"bltl",	"blel",	"bgtl",	"bgel",	"beql",	"cvtlf",	"cvtfl",	"cvtlw",	"cvtwl",	"cvtlc",	"cvtcl",	"headl",	"consl",	"newcl",	"casec",	"indl",	"movpc",	"tcmp",	"mnewz",	"cvtrf",	"cvtfr",	"cvtws",	"cvtsw",	"lsrw",	"lsrl",	"eclr",	"newz",	"newaz",	"raise",	"casel",	"mulx",	"divx",	"cvtxx",	"mulx0",	"divx0",	"cvtxx0",	"mulx1",	"divx1",	"cvtxx1",	"cvtfx",	"cvtxf",	"expw",	"expl",	"expf",	"self",};