|
|
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 "unx386.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: { int i = 0; \ ! 41: while (i < (size)) \ ! 42: { if (i%10 == 0) { if (i!=0) fprintf ((FILE), "\n"); \ ! 43: fprintf ((FILE), "%s ", ASM_BYTE_OP); } \ ! 44: else fprintf ((FILE), ","); \ ! 45: fprintf ((FILE), "0x%x", ((p)[i++] & 0377)) ;} \ ! 46: fprintf ((FILE), "\n"); } ! 47: ! 48: /* Do use .optim by default on this machine. */ ! 49: #undef ASM_FILE_START_1 ! 50: #define ASM_FILE_START_1(FILE) fprintf (FILE, "\t.optim\n") ! 51: ! 52: /* This is how to output an assembler line ! 53: that says to advance the location counter ! 54: to a multiple of 2**LOG bytes. */ ! 55: ! 56: #define ASM_OUTPUT_ALIGN(FILE,LOG) \ ! 57: if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG)) ! 58: ! 59: /* This is how to output an assembler line ! 60: that says to advance the location counter by SIZE bytes. */ ! 61: ! 62: #define ASM_OUTPUT_SKIP(FILE,SIZE) \ ! 63: fprintf ((FILE), "\t.set .,.+%u\n", (SIZE)) ! 64: ! 65: /* Can't use ASM_OUTPUT_SKIP in text section; it doesn't leave 0s. */ ! 66: ! 67: #define ASM_NO_SKIP_IN_TEXT 1 ! 68: ! 69: #define BSS_SECTION_FUNCTION \ ! 70: void \ ! 71: bss_section () \ ! 72: { \ ! 73: if (in_section != in_bss) \ ! 74: { \ ! 75: fprintf (asm_out_file, "%s\n", BSS_SECTION_ASM_OP); \ ! 76: in_section = in_bss; \ ! 77: } \ ! 78: } ! 79: ! 80: /* Define the syntax of labels and symbol definitions/declarations. */ ! 81: ! 82: /* This is how to store into the string BUF ! 83: the symbol_ref name of an internal numbered label where ! 84: PREFIX is the class of label and NUM is the number within the class. ! 85: This is suitable for output with `assemble_name'. */ ! 86: ! 87: #define ASM_GENERATE_INTERNAL_LABEL(BUF,PREFIX,NUMBER) \ ! 88: sprintf ((BUF), ".%s%d", (PREFIX), (NUMBER)) ! 89: ! 90: /* This is how to output an internal numbered label where ! 91: PREFIX is the class of label and NUM is the number within the class. */ ! 92: ! 93: #define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \ ! 94: fprintf (FILE, ".%s%d:\n", PREFIX, NUM) ! 95: ! 96: /* This is how to output a reference to a user-level label named NAME. */ ! 97: ! 98: #undef ASM_OUTPUT_LABELREF ! 99: #define ASM_OUTPUT_LABELREF(FILE,NAME) \ ! 100: fprintf (FILE, "%s", NAME)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.