📄 as.h
字号:
enum _relax_state { /* Variable chars to be repeated fr_offset times. Fr_symbol unused. Used with fr_offset == 0 for a constant length frag. */ rs_fill = 1, /* Align. The fr_offset field holds the power of 2 to which to align. The fr_var field holds the number of characters in the fill pattern. The fr_subtype field holds the maximum number of bytes to skip when aligning, or 0 if there is no maximum. */ rs_align, /* Align code. The fr_offset field holds the power of 2 to which to align. This type is only generated by machine specific code, which is normally responsible for handling the fill pattern. The fr_subtype field holds the maximum number of bytes to skip when aligning, or 0 if there is no maximum. */ rs_align_code, /* Test for alignment. Like rs_align, but used by several targets to warn if data is not properly aligned. */ rs_align_test, /* Org: Fr_offset, fr_symbol: address. 1 variable char: fill character. */ rs_org,#ifndef WORKING_DOT_WORD /* JF: gunpoint */ rs_broken_word,#endif /* machine-specific relaxable (or similarly alterable) instruction */ rs_machine_dependent, /* .space directive with expression operand that needs to be computed later. Similar to rs_org, but different. fr_symbol: operand 1 variable char: fill character */ rs_space, /* A DWARF leb128 value; only ELF uses this. The subtype is 0 for unsigned, 1 for signed. */ rs_leb128, /* Exception frame information which we may be able to optimize. */ rs_cfa, /* Cross-fragment dwarf2 line number optimization. */ rs_dwarf2dbg};typedef enum _relax_state relax_stateT;/* This type is used in prototypes, so it can't be a type that will be widened for argument passing. */typedef unsigned int relax_substateT;/* Enough bits for address, but still an integer type. Could be a problem, cross-assembling for 64-bit machines. */typedef addressT relax_addressT;/* main program "as.c" (command arguments etc) */COMMON unsigned char flag_no_comments; /* -f */COMMON unsigned char flag_debug; /* -D */COMMON unsigned char flag_signed_overflow_ok; /* -J */#ifndef WORKING_DOT_WORDCOMMON unsigned char flag_warn_displacement; /* -K */#endif/* True if local symbols should be retained. */COMMON int flag_keep_locals; /* -L *//* True if we are assembling in MRI mode. */COMMON int flag_mri;/* Should the data section be made read-only and appended to the text section? */COMMON unsigned char flag_readonly_data_in_text; /* -R *//* True if warnings should be inhibited. */COMMON int flag_no_warnings; /* -W *//* True if warnings count as errors. */COMMON int flag_fatal_warnings; /* --fatal-warnings *//* True if we should attempt to generate output even if non-fatal errors are detected. */COMMON unsigned char flag_always_generate_output; /* -Z *//* This is true if the assembler should output time and space usage. */COMMON unsigned char flag_print_statistics;/* True if local absolute symbols are to be stripped. */COMMON int flag_strip_local_absolute;/* True if we should generate a traditional format object file. */COMMON int flag_traditional_format;/* name of emitted object file */COMMON char *out_file_name;/* name of file defining extensions to the basic instruction set */COMMON char *insttbl_file_name;/* TRUE if we need a second pass. */COMMON int need_pass_2;/* TRUE if we should do no relaxing, and leave lots of padding. */COMMON int linkrelax;/* TRUE if we should produce a listing. */extern int listing;/* Type of debugging information we should generate. We currently support stabs, ECOFF, and DWARF2. NOTE! This means debug information about the assembly source code itself and _not_ about possible debug information from a high-level language. This is especially relevant to DWARF2, since the compiler may emit line number directives that the assembler resolves. */enum debug_info_type { DEBUG_UNSPECIFIED, DEBUG_NONE, DEBUG_STABS, DEBUG_ECOFF, DEBUG_DWARF, DEBUG_DWARF2};extern enum debug_info_type debug_type;/* Maximum level of macro nesting. */extern int max_macro_nest;/* Obstack chunk size. Keep large for efficient space use, make small to increase malloc calls for monitoring memory allocation. */extern int chunksize;struct _pseudo_type { /* assembler mnemonic, lower case, no '.' */ const char *poc_name; /* Do the work */ void (*poc_handler) PARAMS ((int)); /* Value to pass to handler */ int poc_val;};typedef struct _pseudo_type pseudo_typeS;/* Prefer varargs for non-ANSI compiler, since some will barf if the ellipsis definition is used with a no-arguments declaration. */#if defined (HAVE_VARARGS_H) && !defined (__STDC__)#undef HAVE_STDARG_H#endif#if defined (HAVE_STDARG_H)#define USE_STDARG#endif#if !defined (USE_STDARG) && defined (HAVE_VARARGS_H)#define USE_VARARGS#endif#ifdef USE_STDARG#if (__GNUC__ >= 2) && !defined(VMS)/* for use with -Wformat */#if __GNUC__ == 2 && __GNUC_MINOR__ < 6/* Support for double underscores in attribute names was added in gcc 2.6, so avoid them if we are using an earlier version. */#define __printf__ printf#define __format__ format#endif#define PRINTF_LIKE(FCN) \ void FCN (const char *format, ...) \ __attribute__ ((__format__ (__printf__, 1, 2)))#define PRINTF_WHERE_LIKE(FCN) \ void FCN (char *file, unsigned int line, const char *format, ...) \ __attribute__ ((__format__ (__printf__, 3, 4)))#else /* __GNUC__ < 2 || defined(VMS) */#define PRINTF_LIKE(FCN) void FCN PARAMS ((const char *format, ...))#define PRINTF_WHERE_LIKE(FCN) void FCN PARAMS ((char *file, \ unsigned int line, \ const char *format, ...))#endif /* __GNUC__ < 2 || defined(VMS) */#else /* ! USE_STDARG */#define PRINTF_LIKE(FCN) void FCN ()#define PRINTF_WHERE_LIKE(FCN) void FCN ()#endif /* ! USE_STDARG */PRINTF_LIKE (as_bad);PRINTF_LIKE (as_fatal) ATTRIBUTE_NORETURN;PRINTF_LIKE (as_tsktsk);PRINTF_LIKE (as_warn);PRINTF_WHERE_LIKE (as_bad_where);PRINTF_WHERE_LIKE (as_warn_where);void as_assert PARAMS ((const char *, int, const char *));void as_abort PARAMS ((const char *, int, const char *)) ATTRIBUTE_NORETURN;void fprint_value PARAMS ((FILE *file, addressT value));void sprint_value PARAMS ((char *buf, addressT value));int had_errors PARAMS ((void));int had_warnings PARAMS ((void));void print_version_id PARAMS ((void));char *app_push PARAMS ((void));char *atof_ieee PARAMS ((char *str, int what_kind, LITTLENUM_TYPE * words));char *input_scrub_include_file PARAMS ((char *filename, char *position));extern void input_scrub_insert_line PARAMS((const char *line));extern void input_scrub_insert_file PARAMS((char *path));char *input_scrub_new_file PARAMS ((char *filename));char *input_scrub_next_buffer PARAMS ((char **bufp));int do_scrub_chars PARAMS ((int (*get) (char *, int), char *to, int tolen));int gen_to_words PARAMS ((LITTLENUM_TYPE * words, int precision, long exponent_bits));int had_err PARAMS ((void));int ignore_input PARAMS ((void));void cond_finish_check PARAMS ((int));void cond_exit_macro PARAMS ((int));int seen_at_least_1_file PARAMS ((void));void app_pop PARAMS ((char *arg));void as_howmuch PARAMS ((FILE * stream));void as_perror PARAMS ((const char *gripe, const char *filename));void as_where PARAMS ((char **namep, unsigned int *linep));void bump_line_counters PARAMS ((void));void do_scrub_begin PARAMS ((int));void input_scrub_begin PARAMS ((void));void input_scrub_close PARAMS ((void));void input_scrub_end PARAMS ((void));int new_logical_line PARAMS ((char *fname, int line_number));void subsegs_begin PARAMS ((void));void subseg_change PARAMS ((segT seg, int subseg));segT subseg_new PARAMS ((const char *name, subsegT subseg));segT subseg_force_new PARAMS ((const char *name, subsegT subseg));void subseg_set PARAMS ((segT seg, subsegT subseg));#ifdef BFD_ASSEMBLERsegT subseg_get PARAMS ((const char *, int));#endifint subseg_text_p PARAMS ((segT));void start_dependencies PARAMS ((char *));void register_dependency PARAMS ((char *));void print_dependencies PARAMS ((void));struct expressionS;struct fix;typedef struct symbol symbolS;struct relax_type;typedef struct frag fragS;#ifdef BFD_ASSEMBLER/* literal.c */valueT add_to_literal_pool PARAMS ((symbolS *, valueT, segT, int));#endifint check_eh_frame PARAMS ((struct expressionS *, unsigned int *));int eh_frame_estimate_size_before_relax PARAMS ((fragS *));int eh_frame_relax_frag PARAMS ((fragS *));void eh_frame_convert_frag PARAMS ((fragS *));#include "expr.h" /* Before targ-*.h *//* this one starts the chain of target dependant headers */#include "targ-env.h"#ifdef TC_ARC#include "struc-symbol.h"#endif#include "write.h"#include "frags.h"#include "hash.h"#include "read.h"#include "symbols.h"#include "tc.h"#include "obj.h"#ifdef USE_EMULATIONS#include "emul.h"#endif#include "listing.h"#ifdef TC_M68K/* True if we are assembling in m68k MRI mode. */COMMON int flag_m68k_mri;#else#define flag_m68k_mri 0#endif#ifdef WARN_COMMENTSCOMMON int warn_comment;COMMON unsigned int found_comment;COMMON char *found_comment_file;#endif#ifndef NUMBERS_WITH_SUFFIX#define NUMBERS_WITH_SUFFIX 0#endif#ifndef LOCAL_LABELS_DOLLAR#define LOCAL_LABELS_DOLLAR 0#endif#ifndef LOCAL_LABELS_FB#define LOCAL_LABELS_FB 0#endif#ifndef LABELS_WITHOUT_COLONS#define LABELS_WITHOUT_COLONS 0#endif#ifndef NO_PSEUDO_DOT#define NO_PSEUDO_DOT 0#endif#ifndef TEXT_SECTION_NAME#define TEXT_SECTION_NAME ".text"#define DATA_SECTION_NAME ".data"#define BSS_SECTION_NAME ".bss"#endif#ifndef OCTETS_PER_BYTE_POWER#define OCTETS_PER_BYTE_POWER 0#endif#ifndef OCTETS_PER_BYTE#define OCTETS_PER_BYTE (1<<OCTETS_PER_BYTE_POWER)#endif#if OCTETS_PER_BYTE != (1<<OCTETS_PER_BYTE_POWER) #error "Octets per byte conflicts with its power-of-two definition!"#endif#endif /* GAS */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -