shithub: loong

ref: a2ad59b340bf3339dbba105310002474b98d0184
dir: /sys/src/cmd/zc/z.out.h/

View raw version
#define	NSNAME	8
#define	NSYM	50
#define	NREG	32

#define NOPROF	(1<<0)
#define DUPOK	(1<<1)

#define	REGRET		4
#define	REGARG		4
/* compiler allocates R4 up as temps */
/* compiler allocates register variables R3-R23 */
#define	REGMIN		5
#define REGMAX		28
#define	REGTMP		17
/* compiler allocates external registers R30 down */
#define	REGEXT		30
#define	REGSP		3
#define	REGSB		31
#define	REGLINK		1
#define	REGZERO		0

#define	NFREG		32
#define	FREGRET		0
#define	FREGMIN		7
/* compiler allocates register variables F0 up */
/* compiler allocates external registers F31 down */
#define	FREGEXT		31

enum	as
{
	AXXX,

	AABSD,
	AABSF,
	AADD,
	AADDD,
	AADDF,
	AADDU,
	AADDW,
	AAND,
	ABEQ,
	ABFPF,
	ABFPT,
	ABGEZ,
	ABGTZ,
	ABLEZ,
	ABLTZ,
	ABNE,
	ABREAK,
	ACMPEQD,
	ACMPEQF,
	ACMPGED,
	ACMPGEF,
	ACMPGTD,
	ACMPGTF,
	ADATA,
	ADIV,
	ADIVD,
	ADIVF,
	ADIVU,
	ADIVW,
	AGLOBL,
	AGOK,
	AHISTORY,
	AJAL,
	AJMP,
	AMOVB,
	AMOVBU,
	AMOVD,
	AMOVDF,
	AMOVDW,
	AMOVF,
	AMOVFD,
	AMOVFW,
	AMOVH,
	AMOVHU,
	AMOVW,
	AMOVWD,
	AMOVWF,
	AMOVWL,
	AMOVWR,
	AMUL,
	AMULD,
	AMULF,
	AMULU,
	AMULW,
	ANAME32,
	ANAME,
	ANEGD,
	ANEGF,
	ANEGW,
	ANOP,
	ANOR,
	AOR,
	AREM,
	AREMU,
	ARET,
	ASGT,
	ASGTU,
	ASLL,
	ASRA,
	ASRL,
	ASUB,
	ASUBD,
	ASUBF,
	ASUBU,
	ASUBW,
	ASYSCALL,
	ATEXT,
	AWORD,
	AXOR,

	AEND,

	AMOVV,
	AMOVVL,
	AMOVVR,
	ASLLV,
	ASRAV,
	ASRLV,
	ADIVV,
	ADIVVU,
	AREMV,
	AREMVU,
	AMULV,
	AMULVU,
	AADDV,
	AADDVU,
	ASUBV,
	ASUBVU,

	ADYNT,
	AINIT,

	ATRUNCFV,
	ATRUNCDV,
	ATRUNCFW,
	ATRUNCDW,
	AMOVWU,
	AMOVFV,
	AMOVDV,
	AMOVVF,
	AMOVVD,

	ALU12IW,
	ALU32ID,
	ALU52ID,

	ASIGNAME,

	ALAST,
};

/* type/name */
enum
{
	D_GOK	= 0,
	D_NONE,

/* name */
	D_EXTERN,
	D_STATIC,
	D_AUTO,
	D_PARAM,

/* type */
	D_BRANCH,
	D_OREG,
	D_CONST,
	D_FCONST,
	D_SCONST,
	D_REG,
	D_FREG,
	D_FCCREG,
	D_FCSREG,
	D_FILE,
	D_OCONST,
	D_FILE1,
	D_VCONST,
};

/*
 * this is the ranlib header
 */
#define	SYMDEF	"__.SYMDEF"

/*
 * this is the simulated IEEE floating point
 */
typedef	struct	ieee	Ieee;
struct	ieee
{
	long	l;	/* contains ls-man	0xffffffff */
	long	h;	/* contains sign	0x80000000
				    exp		0x7ff00000
				    ms-man	0x000fffff */
};