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

📄 hp-symtab.h

📁 基于4个mips核的noc设计
💻 H
📖 第 1 页 / 共 5 页
字号:
     memory address pointed to by LOWBOUND.     10 for a dynamic lower bound described by an variable found in the     DNTT/LNTT (LOWBOUND would be a pointer into the DNTT/LNTT).   DYN_HIGH is similar to DYN_LOW, except it describes the upper bound.   SUBTYPE points to the type of the subrange.   BITLENGTH is the length in bits needed to describe the subrange's   values.  */struct dntt_type_subrange{  unsigned int extension:	1;  unsigned int kind:	10;  unsigned int dyn_low:		2;  unsigned int dyn_high:	2;  unsigned int unused:		17;  int lowbound;  int highbound;  dnttpointer subtype;  unsigned int bitlength;};/* DNTT_TYPE_ARRAY   Used to describe an array type.   DECLARATION describes the bit packing used in the array.   ARRAYISBYTES is nonzero if the field in arraylength describes the   length in bytes rather than in bits.  A value of zero is used to   describe an array with size 2**32.   ELEMISBYTES is nonzero if the length if each element in the array   is describes in bytes rather than bits.  A value of zero is used   to an element with size 2**32.   ELEMORDER is nonzero if the elements are indexed in increasing order.   JUSTIFIED if the elements are left justified to index zero.   ARRAYLENGTH is the length of the array.   INDEXTYPE is a DNTT pointer to the type used to index the array.   ELEMTYPE is a DNTT pointer to the type for the array elements.   ELEMLENGTH is the length of each element in the array (including   any padding).   Multi-dimensional arrays are represented by ELEMTYPE pointing to   another DNTT_TYPE_ARRAY.  */struct dntt_type_array{  unsigned int extension:	1;  unsigned int kind:	10;  unsigned int declaration:	2;  unsigned int dyn_low:		2;  unsigned int dyn_high:	2;  unsigned int arrayisbytes:	1;  unsigned int elemisbytes:	1;  unsigned int elemorder:	1;  unsigned int justified:	1;  unsigned int unused:		11;  unsigned int arraylength;  dnttpointer indextype;  dnttpointer elemtype;  unsigned int elemlength;};/* DNTT_TYPE_STRUCT   DNTT_TYPE_STRUCT is used to describe a C structure.   DECLARATION describes the bitpacking used.   FIRSTFIELD is a DNTT pointer to the first field of the structure   (each field contains a pointer to the next field, walk the list   to access all fields of the structure).   VARTAGFIELD and VARLIST are used for Pascal variant records.   BITLENGTH is the size of the structure in bits.  */struct dntt_type_struct{  unsigned int extension:	1;  unsigned int kind:	10;  unsigned int declaration:	2;  unsigned int unused:		19;  dnttpointer firstfield;  dnttpointer vartagfield;  dnttpointer varlist;  unsigned int bitlength;};/* DNTT_TYPE_UNION   DNTT_TYPE_UNION is used to describe a C union.   FIRSTFIELD is a DNTT pointer to the beginning of the field chain.   BITLENGTH is the size of the union in bits.  */struct dntt_type_union{  unsigned int extension:	1;  unsigned int kind:	10;  unsigned int unused:		21;  dnttpointer firstfield;  unsigned int bitlength;};/* DNTT_TYPE_FIELD   DNTT_TYPE_FIELD describes one field in a structure or union   or C++ class.   VISIBILITY is used to describe the visibility of the field   (for c++.  public = 0, protected = 1, private = 2).   A_UNION is nonzero if this field is a member of an anonymous union.   STATICMEM is nonzero if this field is a static member of a template.   NAME is a pointer into the VT for the name of the field.   BITOFFSET gives the offset of this field in bits from the beginning   of the structure or union this field is a member of.   TYPE is a DNTT pointer to the type describing this field.   BITLENGTH is the size of the entry in bits.   NEXTFIELD is a DNTT pointer to the next field in the chain.  */struct dntt_type_field{  unsigned int extension:	1;  unsigned int kind:	10;  unsigned int visibility:	2;  unsigned int a_union:		1;  unsigned int staticmem:	1;  unsigned int unused:		17;  vtpointer name;  unsigned int bitoffset;  dnttpointer type;  unsigned int bitlength;  dnttpointer nextfield;};/* DNTT_TYPE_VARIANT is unused by GDB.  *//* DNTT_TYPE_FILE is unused by GDB.  *//* DNTT_TYPE_FUNCTYPE   I think this is used to describe a function type (e.g., would   be emitted as part of a function-pointer description).   VARARGS is nonzero if this function uses varargs.   FIRSTPARAM is a DNTT pointer to the first entry in the parameter   chain.   RETVAL is a DNTT pointer to the type of the return value.  */struct dntt_type_functype{  unsigned int extension:	1;  unsigned int kind:		10;  unsigned int varargs:		1;  unsigned int info:		4;  unsigned int unused:		16;  unsigned int bitlength;  dnttpointer firstparam;  dnttpointer retval;};/* DNTT_TYPE_WITH is emitted by C++ to indicate "with" scoping semantics.   (Probably also emitted by PASCAL to support "with"...).      C++ example: Say "memfunc" is a method of class "c", and say   "m" is a data member of class "c". Then from within "memfunc",   it is legal to reference "m" directly (e.g. you don't have to   say "this->m". The symbol table indicates   this by emitting a DNTT_TYPE_WITH symbol within the function "memfunc",   pointing to the type symbol for class "c".    In GDB, this symbol record is unnecessary,    because GDB's symbol lookup algorithm   infers the "with" semantics when it sees a "this" argument to the member   function. So GDB can safely ignore the DNTT_TYPE_WITH record.   A DNTT_TYPE_WITH has a matching DNTT_TYPE_END symbol  */struct dntt_type_with {  unsigned int extension:	1;    /* always zero */  unsigned int kind:		10;   /* always DNTT_TYPE_WITH */  unsigned int addrtype:  	2;    /* 0 => STATTYPE                */                                      /* 1 => DYNTYPE                 */                                      /* 2 => REGTYPE                 */  unsigned int indirect: 	1;    /* 1 => pointer to object       */  unsigned int longaddr:  	1;    /* 1 => in long pointer space   */  unsigned int nestlevel: 	6;    /* # of nesting levels back     */  unsigned int doc_ranges: 	1;    /* 1 => location is range list  */  unsigned int unused:   	10;  long location;       		      /* where stored (allocated)     */  sltpointer address;  dnttpointer type;                   /* type of with expression      */  vtpointer name;                     /* name of with expression      */  unsigned long  offset;              /* byte offset from location    */};                                   /* DNTT_TYPE_COMMON is unsupported by GDB.  *//* A DNTT_TYPE_COMMON symbol must have a matching DNTT_TYPE_END symbol *//* DNTT_TYPE_COBSTRUCT is unsupported by GDB.  *//* DNTT_TYPE_XREF is unsupported by GDB.  *//* DNTT_TYPE_SA is unsupported by GDB.  *//* DNTT_TYPE_MACRO is unsupported by GDB *//* DNTT_TYPE_BLOCKDATA has the same structure as DNTT_TYPE_FUNCTION *//* The following are the C++ specific SOM records *//*  The purpose of the DNTT_TYPE_CLASS_SCOPE is to bracket C++ methods    and indicate the method name belongs in the "class scope" rather    than in the module they are being defined in. For example:    class c {    ...    void memfunc(); // member function    };    void c::memfunc()   // definition of class c's "memfunc"    {    ...    }    main()    {    ...    }    In the above, the name "memfunc" is not directly visible from "main".    I.e., you have to say "break c::memfunc".    If it were a normal function (not a method), it would be visible    via the simple "break memfunc". Since "memfunc" otherwise looks    like a normal FUNCTION in the symbol table, the bracketing    CLASS_SCOPE is what is used to indicate it is really a method.       A DNTT_TYPE_CLASS_SCOPE symbol must have a matching DNTT_TYPE_END symbol */struct dntt_type_class_scope {  unsigned int extension:   1;	   /* always zero */  unsigned int kind:       10;     /* always DNTT_TYPE_CLASS_SCOPE */  unsigned int unused:     21;   sltpointer address         ;    /* pointer to SLT entry */  dnttpointer type           ;     /* pointer to class type DNTT */};/* C++ reference parameter.   The structure of this record is the same as DNTT_TYPE_POINTER -    refer to struct dntt_type_pointer. *//* The next two describe C++ pointer-to-data-member type, and    pointer-to-member-function type, respectively.   DNTT_TYPE_PTRMEM and DNTT_TYPE_PTRMEMFUNC have the same structure  */struct dntt_type_ptrmem {  unsigned int extension:   1;	   /* always zero */  unsigned int kind:       10;     /* always DNTT_TYPE_PTRMEM */  unsigned int unused:	   21;  dnttpointer pointsto	     ;     /* pointer to class DNTT         */  dnttpointer memtype 	     ;     /* type of member                */};struct dntt_type_ptrmemfunc {  unsigned int extension:   1;	   /* always zero */  unsigned int kind:       10;     /* always DNTT_TYPE_PTRMEMFUNC */  unsigned int unused:	   21;  dnttpointer pointsto	     ;     /* pointer to class DNTT         */  dnttpointer memtype 	     ;     /* type of member                */};/* The DNTT_TYPE_CLASS symbol is emitted to describe a class type. * "memberlist" points to a chained list of FIELD or GENFIELD records * indicating the class members. "parentlist" points to a chained list * of INHERITANCE records indicating classes from which we inherit * fields. */struct dntt_type_class {  unsigned int extension:   1;     /* always 0 */  unsigned int kind:       10;     /* always DNTT_TYPE_CLASS */  unsigned int abstract:    1;     /* is this an abstract class?    */  unsigned int class_decl:  2;     /* 0=class,1=union,2=struct      */  unsigned int expansion:   1;     /* 1=template expansion          */  unsigned int unused:     17;       dnttpointer memberlist     ;     /* ptr to chain of [GEN]FIELDs */  unsigned long vtbl_loc     ;     /* offset in obj of ptr to vtbl  */  dnttpointer parentlist     ;     /* ptr to K_INHERITANCE list     */  unsigned long bitlength    ;     /* total at this level           */  dnttpointer identlist      ;     /* ptr to chain of class ident's */  dnttpointer friendlist     ;     /* ptr to K_FRIEND list          */  dnttpointer templateptr    ;     /* ptr to template               */  dnttpointer nextexp        ;     /* ptr to next expansion         */};/* Class members are indicated via either the FIELD record (for   data members, same as for C struct fields), or by the GENFIELD record   (for member functions). */struct dntt_type_genfield {  unsigned int extension:   1;	   /* always zero */  unsigned int kind:       10;     /* always DNTT_TYPE_GENFIELD */  unsigned int visibility:  2;     /* pub = 0, prot = 1, priv = 2   */  unsigned int a_union:     1;     /* 1 => anonymous union member   */  unsigned int unused:	   18;  dnttpointer field	     ;     /* pointer to field or qualifier */  dnttpointer nextfield      ;     /* pointer to next field         */};/* C++ virtual functions */struct dntt_type_vfunc {  unsigned int extension:   1;	   /* always zero */  unsigned int kind:       10;     /* always DNTT_TYPE_VFUNC */  unsigned int pure:        1;     /* pure virtual function ?       */  unsigned int unused:	   20;  dnttpointer funcptr        ;     /* points to FUNCTION symbol     */  unsigned long vtbl_offset  ;     /* offset into vtbl for virtual  */};/* Not precisely sure what this is intended for - DDE ignores it */struct dntt_type_memaccess {  unsigned int extension:   1;	   /* always zero */  unsigned int kind:       10;     /* always DNTT_TYPE_MEMACCESS */  unsigned int unused:	   21;  dnttpointer classptr	     ;     /* pointer to base class         */  dnttpointer field          ;     /* pointer field                 */};/* The DNTT_TYPE_INHERITANCE record describes derived classes. * In particular, the "parentlist" field of the CLASS record points * to a list of INHERITANCE records for classes from which we  * inherit members. */struct dntt_type_inheritance {  unsigned int extension:   1;	   /* always zero */  unsigned int kind:       10;     /* always DNTT_TYPE_INHERITANCE */  unsigned int Virtual:     1;     /* virtual base class ?          */  unsigned int visibility:  2;     /* pub = 0, prot = 1, priv = 2   */  unsigned int unused:	   18;  dnttpointer classname      ;     /* first parent class, if any    */  unsigned long offset       ;     /* offset to start of base class */  dnttpointer next           ;     /* pointer to next K_INHERITANCE */  unsigned long future[2]    ;     /* padding to 3-word block end   */

⌨️ 快捷键说明

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