|
|
1.1 ! root 1: /* Definitions for AT&T assembler syntax for the Intel 80386. ! 2: Copyright (C) 1988 Free Software Foundation, Inc. ! 3: ! 4: This file is part of GNU CC. ! 5: ! 6: GNU CC is free software; you can redistribute it and/or modify ! 7: it under the terms of the GNU General Public License as published by ! 8: the Free Software Foundation; either version 2, or (at your option) ! 9: any later version. ! 10: ! 11: GNU CC is distributed in the hope that it will be useful, ! 12: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! 14: GNU General Public License for more details. ! 15: ! 16: You should have received a copy of the GNU General Public License ! 17: along with GNU CC; see the file COPYING. If not, write to ! 18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ! 19: ! 20: /* Include common aspects of all 386 Unix assemblers. */ ! 21: #include "i386/unix.h" ! 22: ! 23: #define TARGET_VERSION fprintf (stderr, " (80386, ATT syntax)"); ! 24: ! 25: /* Define the syntax of instructions and addresses. */ ! 26: ! 27: /* Prefix for internally generated assembler labels. */ ! 28: #define LPREFIX ".L" ! 29: ! 30: /* Assembler pseudos to introduce constants of various size. */ ! 31: ! 32: /* #define ASM_BYTE_OP "\t.byte" Now in svr3.h or svr4.h. */ ! 33: #define ASM_SHORT "\t.value" ! 34: #define ASM_LONG "\t.long" ! 35: #define ASM_DOUBLE "\t.double" ! 36: ! 37: /* How to output an ASCII string constant. */ ! 38: ! 39: #define ASM_OUTPUT_ASCII(FILE, p, size) \ ! 40: do \ ! 41: { int i = 0; \ ! 42: while (i < (size)) \ ! 43: { if (i%10 == 0) { if (i!=0) fprintf ((FILE), "\n"); \ ! 44: fprintf ((FILE), "%s ", ASM_BYTE_OP); } \ ! 45: else fprintf ((FILE), ","); \ ! 46: fprintf ((FILE), "0x%x", ((p)[i++] & 0377)) ;} \ ! 47: fprintf ((FILE), "\n"); \ ! 48: } while (0) ! 49: ! 50: /* Do use .optim by default on this machine. */ ! 51: #undef ASM_FILE_START_1 ! 52: #define ASM_FILE_START_1(FILE) fprintf (FILE, "\t.optim\n") ! 53: ! 54: /* This is how to output an assembler line ! 55: that says to advance the location counter ! 56: to a multiple of 2**LOG bytes. */ ! 57: ! 58: #define ASM_OUTPUT_ALIGN(FILE,LOG) \ ! 59: if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG)) ! 60: ! 61: /* This is how to output an assembler line ! 62: that says to advance the location counter by SIZE bytes. */ ! 63: ! 64: #define ASM_OUTPUT_SKIP(FILE,SIZE) \ ! 65: fprintf ((FILE), "\t.set .,.+%u\n", (SIZE)) ! 66: ! 67: /* Can't use ASM_OUTPUT_SKIP in text section; it doesn't leave 0s. */ ! 68: ! 69: #define ASM_NO_SKIP_IN_TEXT 1 ! 70: ! 71: #undef BSS_SECTION_FUNCTION /* Override the definition from svr3.h. */ ! 72: #define BSS_SECTION_FUNCTION \ ! 73: void \ ! 74: bss_section () \ ! 75: { \ ! 76: if (in_section != in_bss) \ ! 77: { \ ! 78: fprintf (asm_out_file, "%s\n", BSS_SECTION_ASM_OP); \ ! 79: in_section = in_bss; \ ! 80: } \ ! 81: } ! 82: ! 83: /* Define the syntax of labels and symbol definitions/declarations. */ ! 84: ! 85: /* This is how to store into the string BUF ! 86: the symbol_ref name of an internal numbered label where ! 87: PREFIX is the class of label and NUM is the number within the class. ! 88: This is suitable for output with `assemble_name'. */ ! 89: ! 90: #undef ASM_GENERATE_INTERNAL_LABEL ! 91: #define ASM_GENERATE_INTERNAL_LABEL(BUF,PREFIX,NUMBER) \ ! 92: sprintf ((BUF), ".%s%d", (PREFIX), (NUMBER)) ! 93: ! 94: /* This is how to output an internal numbered label where ! 95: PREFIX is the class of label and NUM is the number within the class. */ ! 96: ! 97: #undef ASM_OUTPUT_INTERNAL_LABEL ! 98: #define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \ ! 99: fprintf (FILE, ".%s%d:\n", PREFIX, NUM) ! 100: ! 101: /* This is how to output a reference to a user-level label named NAME. */ ! 102: ! 103: #undef ASM_OUTPUT_LABELREF ! 104: #define ASM_OUTPUT_LABELREF(FILE,NAME) \ ! 105: fprintf (FILE, "%s", NAME)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.