⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sym-sgi.h

📁 一个用在mips体系结构中的操作系统
💻 H
字号:
/* * Copyright (C) 1996-1998 by the Board of Trustees *    of Leland Stanford Junior University. *  * This file is part of the SimOS distribution.  * See LICENSE file for terms of the license.  * */#ifndef _SYM_SGI_H_#define _SYM_SGI_H_#include "simtypes.h"#define	langAssembler	3	/* one Assembley inst might map to many mach */#define scNil		0#define scText		1	/* text symbol */#define scData		2	/* initialized data symbol */#define scBss		3	/* un-initialized data symbol */#define scRegister	4	/* value of symbol is register number */#define scAbs		5	/* value of symbol is absolute */#define scUndefined	6	/* who knows? */#define scCdbLocal	7	/* variable's value is IN se->va.?? */#define scBits		8	/* this is a bit field */#define scCdbSystem	9	/* variable's value is IN CDB's address space */#define scDbx		9	/* overlap dbx internal use */#define scRegImage	10	/* register value saved on stack */#define scInfo		11	/* symbol contains debugger information */#define scUserStruct	12	/* address in struct user for current process */#define scSData		13	/* load time only small data */#define scSBss		14	/* load time only small common */#define scRData		15	/* load time only read only data */#define scVar		16	/* Var parameter (fortran,pascal) */#define scCommon	17	/* common variable */#define scSCommon	18	/* small common */#define stNil		0	/* Nuthin' special */#define stGlobal	1	/* external symbol */#define stStatic	2	/* static */#define stParam		3	/* procedure argument */#define stLocal		4	/* local variable */#define stLabel		5	/* label */#define stProc		6	/*     "      "	 Procedure */#define stBlock		7	/* beginnning of block */#define stEnd		8	/* end (of anything) */#define stMember	9	/* member (of anything	- struct/union/enum */#define stTypedef	10	/* type definition */#define stFile		11	/* file name */#define stRegReloc	12	/* register relocation */#define stForward	13	/* forwarding address */#define stStaticProc	14	/* load time only static procs */#define stConstant	15	/* const */#define stStaParam	16	/* Fortran static parameters */#define stBase          17      /* DEC */#define stTag           18      /*  DEC */#define stAdjMember     19      /*  DEC INTERLUDE */#define stPublic        20      /* public access divider */#define stProtected     21      /* protected access divider */                #define stPrivate       22      /* private access divider */#define stTemp          23	/* template */#define stTempProc      24	/* template function */#define stDefArg	25	/* default argument */#define stStruct        26      /* begin Struct kind of stBlock */#define stUnion         27      /* begin Union kind of stBlock */#define stEnum          28      /* begin Enum  kind of stBlock */#define	stIndirect	34	/* Indirect type specification */#define tqNil	0	/* bt is what you see */#define tqPtr	1	/* pointer */#define tqProc	2	/* procedure */#define tqArray 3	/* duh */#define tqFar	4	/* longer addressing - 8086/8 land */#define tqVol	5	/* volatile */#define tqConst 6	/* const */#define btNil		0	/* undefined */#define btAdr32		1	/* 32-bit address */#define btAdr		btAdr32	/* address - integer same size as pointer */#define btChar		2	/* character */#define btUChar		3	/* unsigned character */#define btShort		4	/* short */#define btUShort	5	/* unsigned short */#define btInt32		6	/* 32-bit int */#define btInt		btInt32	/* int */#define btUInt32	7	/* 32-bit unsigned int */#define btUInt		btUInt32	/* unsigned int */#define btLong32	8	/* 32-bit long */#define btLong		btLong32	/* long */#define btULong32	9	/* 32-bit unsigned long */#define btULong		btULong32	/* unsigned long */#define btFloat		10	/* float (real) */#define btDouble	11	/* Double (real) */#define btStruct	12	/* Structure (Record) */#define btUnion		13	/* Union (variant) */#define btEnum		14	/* Enumerated */#define btTypedef	15	/* defined via a typedef, isymRef points */#define btLong64	30	/* 64-bit long */#define btULong64	31	/* 64-bit unsigned long */#define btLongLong64	32	/* 64-bit int64 */#define btLongLong	btLongLong64	/* int64 */#define btULongLong64	33	/* 64-bit uint64 */#define btULongLong	btULongLong64	/* uint64 */#define btAdr64		34	/* 64-bit address */typedef int32  long_i;typedef uint32 ulong_i;typedef struct __sgi_hdrr_s  {	short	magic;		/* to verify validity of the table */	short	vstamp;		/* version stamp */	long_i	ilineMax;	/* number of line number entries */	long_i	cbLine;		/* number of bytes for line number entries */	long_i	cbLineOffset;	/* offset to start of line number entries*/	long_i	idnMax;		/* max index into dense number table */	long_i	cbDnOffset;	/* offset to start dense number table */	long_i	ipdMax;		/* number of procedures */	long_i	cbPdOffset;	/* offset to procedure descriptor table */	long_i	isymMax;	/* number of local symbols */	long_i	cbSymOffset;	/* offset to start of local symbols*/	long_i	ioptMax;	/* max index into optimization symbol entries */	long_i	cbOptOffset;	/* offset to optimization symbol entries */	long_i	iauxMax;	/* number of auxillary symbol entries */	long_i	cbAuxOffset;	/* offset to start of auxillary symbol entries*/	long_i	issMax;		/* max index into local strings */	long_i	cbSsOffset;	/* offset to start of local strings */	long_i	issExtMax;	/* max index into external strings */	long_i	cbSsExtOffset;	/* offset to start of external strings */	long_i	ifdMax;		/* number of file descriptor entries */	long_i	cbFdOffset;	/*s offset to file descriptor table */	long_i	crfd;		/* number of relative file descriptor entries */	long_i	cbRfdOffset;	/* offset to relative file descriptor table */	long_i	iextMax;	/* max index into external symbols */	long_i	cbExtOffset;	/* offset to start of external symbol entries*/	/* If you add machine dependent fields, add them here */	} HDRR, *pHDRR; #define cbHDRR sizeof(HDRR)#define hdrNil ((pHDRR)0)#ifdef HOST_BIG_ENDIANtypedef struct fdr {	ulong_i	adr;	/* memory address of beginning of file */	long_i	rss;		/* file name (of source, if known) */	long_i	issBase;	/* file's string space */	long_i	cbSs;		/* number of bytes in the ss */	long_i	isymBase;	/* beginning of symbols */	long_i	csym;		/* count file's of symbols */	long_i	ilineBase;	/* file's line symbols */	long_i	cline;		/* count of file's line symbols */	long_i	ioptBase;	/* file's optimization entries */	long_i	copt;		/* count of file's optimization entries */				/* the following MUST be unsigned: still				** restricts to 64K procedures. sgi */	unsigned short ipdFirst;/* start of procedures for this file */	unsigned short	cpd;	/* count of procedures for this file */	long_i	iauxBase;	/* file's auxiliary entries */	long_i	caux;		/* count of file's auxiliary entries */	long_i	rfdBase;	/* index into the file indirect table */	long_i	crfd;		/* count file indirect entries */	unsigned lang: 5;	/* language for this file */	unsigned fMerge : 1;	/* whether this file can be merged */	unsigned fReadin : 1;	/* true if it was read in (not just created) */	unsigned fBigendian : 1;/* if set, was compiled on big endian machine */				/*	aux's will be in compile host's sex */	unsigned glevel : 2;	/* level this file was compiled with */	unsigned signedchar : 1; /* whether files was compiled with char being signed */        unsigned ipdFirstMSBits: 4; /* upper bits to allow  ipdFirst to			 exceed 64K entries                          (These are the most significant bits of what is, 			 after concatenating the bits, a 20 bit number) */        unsigned cpdMSBits: 4;  /* upper bits to allow cpd to exceed 64K			 entries                          (These are the most significant bits of what is, 			 after concatenating the bits, a 20 bit number) */	unsigned reserved : 13;  /* reserved for future use */	long_i	cbLineOffset;	/* byte offset from header for this file ln's */	long_i	cbLine;		/* size of lines for this file */	} FDR, *pFDR;#endif#ifdef HOST_LITTLE_ENDIANtypedef struct fdr {	ulong_i	adr;	/* memory address of beginning of file */	long_i	rss;		/* file name (of source, if known) */	long_i	issBase;	/* file's string space */	long_i	cbSs;		/* number of bytes in the ss */	long_i	isymBase;	/* beginning of symbols */	long_i	csym;		/* count file's of symbols */	long_i	ilineBase;	/* file's line symbols */	long_i	cline;		/* count of file's line symbols */	long_i	ioptBase;	/* file's optimization entries */	long_i	copt;		/* count of file's optimization entries */				/* the following MUST be unsigned: still				** restricts to 64K procedures. sgi */	unsigned short ipdFirst;/* start of procedures for this file */	unsigned short	cpd;	/* count of procedures for this file */	long_i	iauxBase;	/* file's auxiliary entries */	long_i	caux;		/* count of file's auxiliary entries */	long_i	rfdBase;	/* index into the file indirect table */	long_i	crfd;		/* count file indirect entries */	unsigned reserved : 13;  /* reserved for future use */        unsigned cpdMSBits: 4;  /* upper bits to allow cpd to exceed 64K			 entries                          (These are the most significant bits of what is, 			 after concatenating the bits, a 20 bit number) */        unsigned ipdFirstMSBits: 4; /* upper bits to allow  ipdFirst to			 exceed 64K entries                          (These are the most significant bits of what is, 			 after concatenating the bits, a 20 bit number) */	unsigned signedchar : 1; /* whether files was compiled with char being signed */	unsigned glevel : 2;	/* level this file was compiled with */	unsigned fBigendian : 1;/* if set, was compiled on big endian machine */				/*	aux's will be in compile host's sex */	unsigned fReadin : 1;	/* true if it was read in (not just created) */	unsigned fMerge : 1;	/* whether this file can be merged */	unsigned lang: 5;	/* language for this file */	long_i	cbLineOffset;	/* byte offset from header for this file ln's */	long_i	cbLine;		/* size of lines for this file */	} FDR, *pFDR;#endif#define cbFDR sizeof(FDR)#define fdNil ((pFDR)0)#define ifdNil -1#define ifdTemp 0#define ilnNil -1typedef struct pdr {	ulong_i	adr;	/* memory address of start of procedure */	long_i	isym;		/* start of local symbol entries */	long_i	iline;		/* start of line number entries*/	long_i	regmask;	/* save register mask */	long_i	regoffset;	/* save register offset */	long_i	iopt;		/* start of optimization symbol entries*/	long_i	fregmask;	/* save floating point register mask */	long_i	fregoffset;	/* save floating point register offset */	long_i	frameoffset;	/* frame size */	short	framereg;	/* frame pointer register */	short	pcreg;		/* offset or reg of return pc */	long_i	lnLow;		/* lowest line in the procedure */	long_i	lnHigh;		/* highest line in the procedure */	long_i	cbLineOffset;	/* byte offset for this procedure from the fd base */	} PDR, *pPDR;#define cbPDR sizeof(PDR)#define pdNil ((pPDR) 0)#define ipdNil	-1typedef	long_i LINER, *pLINER;#define lineNil ((pLINER)0)#define cbLINER sizeof(LINER)#define ilineNil	-1#ifdef HOST_BIG_ENDIANtypedef struct __sgi_symr_s {	long_i	iss;		/* index into String Space of name */	long_i	value;		/* value of symbol */	unsigned st : 6;	/* symbol type */	unsigned sc  : 5;	/* storage class - text, data, etc */	unsigned reserved : 1;	/* reserved */	unsigned index : 20;	/* index into sym/aux table */	} SYMR, *pSYMR;#endif#ifdef HOST_LITTLE_ENDIANtypedef struct __sgi_symr_s {	long_i	iss;		/* index into String Space of name */	long_i	value;		/* value of symbol */	unsigned index : 20;	/* index into sym/aux table */	unsigned reserved : 1;	/* reserved */	unsigned sc  : 5;	/* storage class - text, data, etc */	unsigned st : 6;	/* symbol type */	} SYMR, *pSYMR;#endif#define symNil ((pSYMR)0)#define cbSYMR sizeof(SYMR)#define isymNil -1#define indexNil 0xfffff#define issNil -1#define issNull 0#ifdef HOST_BIG_ENDIANtypedef struct __sgi_extr__ {	unsigned jmptbl:1;	/* symbol is a jump table entry for shlibs */	unsigned cobol_main:1;	/* symbol is a cobol main procedure */	unsigned weakext:1;	/* symbol is weak external */	unsigned deltacplus:1;	/* symbol is delta C++ symbol */	unsigned multiext:1;	/* symbol may be defined multiple times */	unsigned reserved:11;	/* reserved for future use */	short	ifd;		/* where the iss and index fields point into */	SYMR	asym;		/* symbol for the external */	} EXTR, *pEXTR;#endif#ifdef HOST_LITTLE_ENDIANtypedef struct __sgi_extr__ {	unsigned reserved:11;	/* reserved for future use */	unsigned multiext:1;	/* symbol may be defined multiple times */	unsigned deltacplus:1;	/* symbol is delta C++ symbol */	unsigned weakext:1;	/* symbol is weak external */	unsigned cobol_main:1;	/* symbol is a cobol main procedure */	unsigned jmptbl:1;	/* symbol is a jump table entry for shlibs */	short	ifd;		/* where the iss and index fields point into */	SYMR	asym;		/* symbol for the external */	} EXTR, *pEXTR;#endif#define extNil ((pEXTR)0)#define cbEXTR sizeof(EXTR)#ifdef HOST_BIG_ENDIANtypedef struct {	unsigned fBitfield : 1; /* set if bit width is specified */	unsigned continued : 1; /* indicates additional TQ info in next AUX */	unsigned bt  : 6;	/* basic type */	unsigned tq4 : 4;	unsigned tq5 : 4;	/* ---- 16 bit boundary ---- */	unsigned tq0 : 4;	unsigned tq1 : 4;	/* 6 type qualifiers - tqPtr, etc. */	unsigned tq2 : 4;	unsigned tq3 : 4;	} TIR, *pTIR;#endif#ifdef HOST_LITTLE_ENDIANtypedef struct {	unsigned tq3 : 4;	unsigned tq2 : 4;	unsigned tq1 : 4;	/* 6 type qualifiers - tqPtr, etc. */	unsigned tq0 : 4;	/* ---- 16 bit boundary ---- */	unsigned tq5 : 4;	unsigned tq4 : 4;	unsigned bt  : 6;	/* basic type */	unsigned continued : 1; /* indicates additional TQ info in next AUX */	unsigned fBitfield : 1; /* set if bit width is specified */	} TIR, *pTIR;#endif#define cbTIR sizeof(TIR)#define tiNil ((pTIR)0)#define itqMax 6#ifdef HOST_BIG_ENDIANtypedef struct {	unsigned	rfd : 12;    /* index into the file indirect table */	unsigned	index : 20; /* index int sym/aux/iss tables */	} RNDXR, *pRNDXR;#endif#ifdef HOST_LITTLE_ENDIANtypedef struct {	unsigned	index : 20; /* index int sym/aux/iss tables */	unsigned	rfd : 12;    /* index into the file indirect table */	} RNDXR, *pRNDXR;#endif#define cbRNDXR sizeof(RNDXR)#define rndxNil ((pRNDXR)0)typedef union __sgi_auxu_u {	TIR	ti;		/* type information record */	RNDXR	rndx;		/* relative index into symbol table */	long_i	dnLow;		/* low dimension */	long_i	dnHigh;		/* high dimension */	long_i	isym;		/* symbol table index (end of proc) */	long_i	iss;		/* index into string space (not used) */	long_i	width;		/* width for non-default sized struc fields */	long_i	count;		/* count of ranges for variant arm */	} AUXU, *pAUXU;#define cbAUXU sizeof(AUXU)#define auxNil ((pAUXU)0)#define iauxNil -1typedef long_i RFDT, *pRFDT;#define cbRFDT sizeof(RFDT)#define rfdNil	-1#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -