?? as.h
字號:
/* as.h - global header file Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. GAS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GAS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GAS; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#ifndef GAS#define GAS 1/* I think this stuff is largely out of date. xoxorich. * * CAPITALISED names are #defined. * "lowercaseH" is #defined if "lowercase.h" has been #include-d. * "lowercaseT" is a typedef of "lowercase" objects. * "lowercaseP" is type "pointer to object of type 'lowercase'". * "lowercaseS" is typedef struct ... lowercaseS. * * #define DEBUG to enable all the "know" assertion tests. * #define SUSPECT when debugging hash code. * #define COMMON as "extern" for all modules except one, where you #define * COMMON as "". * If TEST is #defined, then we are testing a module: #define COMMON as "". */#include "config.h"#include "bin-bugs.h"/* This is the code recommended in the autoconf documentation, almost verbatim. If it doesn't work for you, let me know, and notify djm@gnu.ai.mit.edu as well. *//* Added #undef for DJ Delorie. The right fix is to ensure that as.h is included first, before even any system header files, in all files that use it. KR 1994.11.03 *//* Added void* version for STDC case. This is to be compatible with the declaration in bison.simple, used for m68k operand parsing. --KR 1995.08.08 *//* Force void* decl for hpux. This is what Bison uses. --KR 1995.08.16 *//* AIX requires this to be the first thing in the file. */#ifdef __GNUC__# ifndef alloca# ifdef __STDC__extern void *alloca ();# elseextern char *alloca ();# endif# endif#else# if HAVE_ALLOCA_H# include <alloca.h># else# ifdef _AIX #pragma alloca# else# ifndef alloca /* predefined by HP cc +Olibcalls */# if !defined (__STDC__) && !defined (__hpux)extern char *alloca ();# elseextern void *alloca ();# endif /* __STDC__, __hpux */# endif /* alloca */# endif /* _AIX */# endif /* HAVE_ALLOCA_H */#endif/* Now, tend to the rest of the configuration. *//* System include files first... */#include <stdio.h>#include <ctype.h>#ifdef HAVE_STRING_H#include <string.h>#else#ifdef HAVE_STRINGS_H#include <strings.h>#endif#endif#ifdef HAVE_STDLIB_H#include <stdlib.h>#endif#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_SYS_TYPES_H/* for size_t, pid_t */#include <sys/types.h>#endif#include <getopt.h>/* The first getopt value for machine-independent long options. 150 isn't special; it's just an arbitrary non-ASCII char value. */#define OPTION_STD_BASE 150/* The first getopt value for machine-dependent long options. 190 gives the standard options room to grow. */#define OPTION_MD_BASE 190#ifdef DEBUG#undef NDEBUG#endif#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 6)#define __PRETTY_FUNCTION__ ((char*)0)#endif#if 0/* Handle lossage with assert.h. */#ifndef BROKEN_ASSERT#include <assert.h>#else /* BROKEN_ASSERT */#ifndef NDEBUG#define assert(p) ((p) ? 0 : (as_assert (__FILE__, __LINE__, __PRETTY_FUNCTION__), 0))#else#define assert(p) ((p), 0)#endif#endif /* BROKEN_ASSERT */#else#define assert(P) ((P) ? 0 : (as_assert (__FILE__, __LINE__, __PRETTY_FUNCTION__), 0))#undef abort#define abort() as_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)#endif/* Now GNU header files... */#include "ansidecl.h"#ifdef BFD_ASSEMBLER#include "bfd.h"#endif#include "libiberty.h"/* Define the standard progress macros. */#include "progress.h"/* This doesn't get taken care of anywhere. */#ifndef __MWERKS__ /* Metrowerks C chokes on the "defined (inline)" */#if !defined (__GNUC__) && !defined (inline)#define inline#endif#endif /* !__MWERKS__ *//* Other stuff from config.h. */#ifdef NEED_DECLARATION_STRSTRextern char *strstr ();#endif#ifdef NEED_DECLARATION_MALLOCextern PTR malloc ();extern PTR realloc ();#endif#ifdef NEED_DECLARATION_FREEextern void free ();#endif#ifdef NEED_DECLARATION_ERRNOextern int errno;#endif#ifdef NEED_DECLARATION_ENVIRONextern char **environ;#endif/* This is needed for VMS. */#if ! defined (HAVE_UNLINK) && defined (HAVE_REMOVE)#define unlink remove#endif/* Hack to make "gcc -Wall" not complain about obstack macros. */#if !defined (memcpy) && !defined (bcopy)#define bcopy(src,dest,size) memcpy(dest,src,size)#endif/* Make Saber happier on obstack.h. */#ifdef SABER#undef __PTR_TO_INT#define __PTR_TO_INT(P) ((int) (P))#undef __INT_TO_PTR#define __INT_TO_PTR(P) ((char *) (P))#endif#ifndef __LINE__#define __LINE__ "unknown"#endif /* __LINE__ */#ifndef __FILE__#define __FILE__ "unknown"#endif /* __FILE__ */#ifndef FOPEN_WB#ifdef GO32#include "fopen-bin.h"#else#include "fopen-same.h"#endif#endif#ifndef EXIT_SUCCESS#define EXIT_SUCCESS 0#define EXIT_FAILURE 1#endif#ifndef SEEK_SET#define SEEK_SET 0#endif#define obstack_chunk_alloc xmalloc#define obstack_chunk_free xfree#define xfree free#include "asintl.h"#define BAD_CASE(val) \ { \ as_fatal (_("Case value %ld unexpected at line %d of file \"%s\"\n"), \ (long) val, __LINE__, __FILE__); \ }#include "flonum.h"/* These are assembler-wide concepts */#ifdef BFD_ASSEMBLERextern bfd *stdoutput;typedef bfd_vma addressT;typedef bfd_signed_vma offsetT;#elsetypedef unsigned long addressT;typedef long offsetT;#endif/* Type of symbol value, etc. For use in prototypes. */typedef addressT valueT;#ifndef COMMON#ifdef TEST#define COMMON /* declare our COMMONs storage here. */#else#define COMMON extern /* our commons live elswhere */#endif#endif/* COMMON now defined */#ifdef DEBUG#ifndef know#define know(p) assert(p) /* Verify our assumptions! */#endif /* not yet defined */#else#define know(p) /* know() checks are no-op.ed */#endif/* input_scrub.c *//* Supplies sanitised buffers to read.c. Also understands printing line-number part of error messages. *//* subsegs.c Sub-segments. Also, segment(=expression type)s.*/#ifndef BFD_ASSEMBLER#ifdef MANY_SEGMENTS#include "bfd.h"#define N_SEGMENTS 40#define SEG_NORMAL(x) ((x) >= SEG_E0 && (x) <= SEG_E39)#define SEG_LIST SEG_E0,SEG_E1,SEG_E2,SEG_E3,SEG_E4,SEG_E5,SEG_E6,SEG_E7,SEG_E8,SEG_E9,\ SEG_E10,SEG_E11,SEG_E12,SEG_E13,SEG_E14,SEG_E15,SEG_E16,SEG_E17,SEG_E18,SEG_E19,\ SEG_E20,SEG_E21,SEG_E22,SEG_E23,SEG_E24,SEG_E25,SEG_E26,SEG_E27,SEG_E28,SEG_E29,\ SEG_E30,SEG_E31,SEG_E32,SEG_E33,SEG_E34,SEG_E35,SEG_E36,SEG_E37,SEG_E38,SEG_E39#define SEG_TEXT SEG_E0#define SEG_DATA SEG_E1#define SEG_BSS SEG_E2#define SEG_LAST SEG_E39#else#define N_SEGMENTS 3#define SEG_NORMAL(x) ((x) == SEG_TEXT || (x) == SEG_DATA || (x) == SEG_BSS)#define SEG_LIST SEG_TEXT,SEG_DATA,SEG_BSS#endiftypedef enum _segT { SEG_ABSOLUTE = 0, SEG_LIST, SEG_UNKNOWN, SEG_GOOF, /* Only happens if AS has a logic error. */ /* Invented so we don't crash printing */ /* error message involving weird segment. */ SEG_EXPR, /* Intermediate expression values. */ SEG_DEBUG, /* Debug segment */ SEG_NTV, /* Transfert vector preload segment */ SEG_PTV, /* Transfert vector postload segment */ SEG_REGISTER /* Mythical: a register-valued expression */} segT;#define SEG_MAXIMUM_ORDINAL (SEG_REGISTER)#elsetypedef asection *segT;#define SEG_NORMAL(SEG) ((SEG) != absolute_section \ && (SEG) != undefined_section \ && (SEG) != reg_section \ && (SEG) != expr_section)#endiftypedef int subsegT;/* What subseg we are accreting now? */COMMON subsegT now_subseg;/* Segment our instructions emit to. */COMMON segT now_seg;#ifdef BFD_ASSEMBLER#define segment_name(SEG) bfd_get_section_name (stdoutput, SEG)#elseextern char const *const seg_name[];#define segment_name(SEG) seg_name[(int) (SEG)]#endif#ifndef BFD_ASSEMBLERextern int section_alignment[];#endif#ifdef BFD_ASSEMBLERextern segT reg_section, expr_section;/* Shouldn't these be eliminated someday? */extern segT text_section, data_section, bss_section;#define absolute_section bfd_abs_section_ptr#define undefined_section bfd_und_section_ptr#else#define reg_section SEG_REGISTER#define expr_section SEG_EXPR#define text_section SEG_TEXT#define data_section SEG_DATA#define bss_section SEG_BSS#define absolute_section SEG_ABSOLUTE#define undefined_section SEG_UNKNOWN#endif/* relax() */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -