|
|
1.1 ! root 1: /* Definitions for BSD assembler syntax for Intel 386 ! 2: (actually AT&T syntax for insns and operands, ! 3: adapted to BSD conventions for symbol names and debugging.) ! 4: Copyright (C) 1988 Free Software Foundation, Inc. ! 5: ! 6: This file is part of GNU CC. ! 7: ! 8: GNU CC is free software; you can redistribute it and/or modify ! 9: it under the terms of the GNU General Public License as published by ! 10: the Free Software Foundation; either version 2, or (at your option) ! 11: any later version. ! 12: ! 13: GNU CC is distributed in the hope that it will be useful, ! 14: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 15: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 16: GNU General Public License for more details. ! 17: ! 18: You should have received a copy of the GNU General Public License ! 19: along with GNU CC; see the file COPYING. If not, write to ! 20: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ! 21: ! 22: /* Include common aspects of all 386 Unix assemblers. */ ! 23: #include "i386/unix.h" ! 24: ! 25: /* Use the Sequent Symmetry assembler syntax. */ ! 26: ! 27: #define TARGET_VERSION fprintf (stderr, " (80386, BSD syntax)"); ! 28: ! 29: /* Define the syntax of pseudo-ops, labels and comments. */ ! 30: ! 31: /* Prefix for internally generated assembler labels. If we aren't using ! 32: underscores, we are using prefix `.'s to identify labels that should ! 33: be ignored, as in `i386/gas.h' [email protected] */ ! 34: #ifdef NO_UNDERSCORES ! 35: #define LPREFIX ".L" ! 36: #else ! 37: #define LPREFIX "L" ! 38: #endif /* not NO_UNDERSCORES */ ! 39: ! 40: /* Assembler pseudos to introduce constants of various size. */ ! 41: ! 42: #define ASM_BYTE_OP "\t.byte" ! 43: #define ASM_SHORT "\t.word" ! 44: #define ASM_LONG "\t.long" ! 45: #define ASM_DOUBLE "\t.double" ! 46: ! 47: /* Output at beginning of assembler file. ! 48: ??? I am skeptical of this -- RMS. */ ! 49: ! 50: #define ASM_FILE_START(FILE) \ ! 51: do { fprintf (FILE, "\t.file\t"); \ ! 52: output_quoted_string (FILE, dump_base_name); \ ! 53: fprintf (FILE, "\n"); \ ! 54: } while (0) ! 55: ! 56: /* This was suggested, but it shouldn't be right for DBX output. -- RMS ! 57: #define ASM_OUTPUT_SOURCE_FILENAME(FILE, NAME) */ ! 58: ! 59: ! 60: /* Define the syntax of labels and symbol definitions/declarations. */ ! 61: ! 62: /* This is how to output an assembler line ! 63: that says to advance the location counter by SIZE bytes. */ ! 64: ! 65: #define ASM_OUTPUT_SKIP(FILE,SIZE) \ ! 66: fprintf (FILE, "\t.space %u\n", (SIZE)) ! 67: ! 68: /* Define the syntax of labels and symbol definitions/declarations. */ ! 69: ! 70: /* This says how to output an assembler line ! 71: to define a global common symbol. */ ! 72: ! 73: #define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \ ! 74: ( fputs (".comm ", (FILE)), \ ! 75: assemble_name ((FILE), (NAME)), \ ! 76: fprintf ((FILE), ",%u\n", (ROUNDED))) ! 77: ! 78: /* This says how to output an assembler line ! 79: to define a local common symbol. */ ! 80: ! 81: #define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE, ROUNDED) \ ! 82: ( fputs (".lcomm ", (FILE)), \ ! 83: assemble_name ((FILE), (NAME)), \ ! 84: fprintf ((FILE), ",%u\n", (ROUNDED))) ! 85: ! 86: /* This is how to output an assembler line ! 87: that says to advance the location counter ! 88: to a multiple of 2**LOG bytes. */ ! 89: ! 90: #define ASM_OUTPUT_ALIGN(FILE,LOG) \ ! 91: if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", (LOG)) ! 92: ! 93: /* This is how to store into the string BUF ! 94: the symbol_ref name of an internal numbered label where ! 95: PREFIX is the class of label and NUM is the number within the class. ! 96: This is suitable for output with `assemble_name'. */ ! 97: ! 98: #ifdef NO_UNDERSCORES ! 99: #define ASM_GENERATE_INTERNAL_LABEL(BUF,PREFIX,NUMBER) \ ! 100: sprintf ((BUF), "*.%s%d", (PREFIX), (NUMBER)) ! 101: #else ! 102: #define ASM_GENERATE_INTERNAL_LABEL(BUF,PREFIX,NUMBER) \ ! 103: sprintf ((BUF), "*%s%d", (PREFIX), (NUMBER)) ! 104: #endif ! 105: ! 106: /* This is how to output an internal numbered label where ! 107: PREFIX is the class of label and NUM is the number within the class. */ ! 108: ! 109: #ifdef NO_UNDERSCORES ! 110: #define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \ ! 111: fprintf (FILE, ".%s%d:\n", PREFIX, NUM) ! 112: #else ! 113: #define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \ ! 114: fprintf (FILE, "%s%d:\n", PREFIX, NUM) ! 115: #endif ! 116: ! 117: /* This is how to output a reference to a user-level label named NAME. */ ! 118: ! 119: #ifdef NO_UNDERSCORES ! 120: #define ASM_OUTPUT_LABELREF(FILE,NAME) fprintf (FILE, "%s", NAME) ! 121: #else ! 122: #define ASM_OUTPUT_LABELREF(FILE,NAME) fprintf (FILE, "_%s", NAME) ! 123: #endif /* not NO_UNDERSCORES */ ! 124: ! 125: /* Sequent has some changes in the format of DBX symbols. */ ! 126: #define DBX_NO_XREFS 1 ! 127: ! 128: /* Don't split DBX symbols into continuations. */ ! 129: #define DBX_CONTIN_LENGTH 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.