118334Speter/* Definitions for AT&T assembler syntax for the Intel 80386. 2117395Skan Copyright (C) 1988, 1996, 2000, 2001, 2002 3117395Skan Free Software Foundation, Inc. 418334Speter 5132718SkanThis file is part of GCC. 618334Speter 7132718SkanGCC is free software; you can redistribute it and/or modify 818334Speterit under the terms of the GNU General Public License as published by 918334Speterthe Free Software Foundation; either version 2, or (at your option) 1018334Speterany later version. 1118334Speter 12132718SkanGCC is distributed in the hope that it will be useful, 1318334Speterbut WITHOUT ANY WARRANTY; without even the implied warranty of 1418334SpeterMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1518334SpeterGNU General Public License for more details. 1618334Speter 1718334SpeterYou should have received a copy of the GNU General Public License 18132718Skanalong with GCC; see the file COPYING. If not, write to 19169689Skanthe Free Software Foundation, 51 Franklin Street, Fifth Floor, 20169689SkanBoston, MA 02110-1301, USA. */ 2118334Speter 2218334Speter 2318334Speter/* Define the syntax of instructions and addresses. */ 2418334Speter 2518334Speter/* Prefix for internally generated assembler labels. */ 2618334Speter#define LPREFIX ".L" 2718334Speter 2818334Speter/* Assembler pseudos to introduce constants of various size. */ 2918334Speter 3090075Sobrien#define ASM_SHORT "\t.value\t" 3190075Sobrien#define ASM_LONG "\t.long\t" 3290075Sobrien#define ASM_QUAD "\t.quad\t" /* Should not be used for 32bit compilation. */ 3318334Speter 3418334Speter/* How to output an ASCII string constant. */ 3518334Speter 3690075Sobrien#define ASM_OUTPUT_ASCII(FILE, PTR, SIZE) \ 3718334Speterdo \ 3890075Sobrien{ size_t i = 0, limit = (SIZE); \ 3990075Sobrien while (i < limit) \ 4018334Speter { if (i%10 == 0) { if (i!=0) fprintf ((FILE), "\n"); \ 4190075Sobrien fputs ("\t.byte\t", (FILE)); } \ 4218334Speter else fprintf ((FILE), ","); \ 4390075Sobrien fprintf ((FILE), "0x%x", ((PTR)[i++] & 0377)) ;} \ 4418334Speter fprintf ((FILE), "\n"); \ 4518334Speter} while (0) 4618334Speter 4790075Sobrien/* Output at beginning of assembler file. */ 48132718Skan#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true 4990075Sobrien 5018334Speter/* This is how to output an assembler line 5118334Speter that says to advance the location counter 5218334Speter to a multiple of 2**LOG bytes. */ 5318334Speter 5418334Speter#define ASM_OUTPUT_ALIGN(FILE,LOG) \ 5518334Speter if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG)) 5618334Speter 5718334Speter/* This is how to output an assembler line 5818334Speter that says to advance the location counter by SIZE bytes. */ 5918334Speter 6018334Speter#define ASM_OUTPUT_SKIP(FILE,SIZE) \ 61132718Skan fprintf ((FILE), "\t.set .,.+%u\n", (int)(SIZE)) 6218334Speter 6318334Speter/* Can't use ASM_OUTPUT_SKIP in text section; it doesn't leave 0s. */ 6418334Speter 6518334Speter#define ASM_NO_SKIP_IN_TEXT 1 6618334Speter 6718334Speter/* Define the syntax of labels and symbol definitions/declarations. */ 6818334Speter 6990075Sobrien/* The prefix to add for compiler private assembler symbols. */ 7090075Sobrien#undef LOCAL_LABEL_PREFIX 7190075Sobrien#define LOCAL_LABEL_PREFIX "." 7290075Sobrien 7318334Speter/* This is how to store into the string BUF 7418334Speter the symbol_ref name of an internal numbered label where 7518334Speter PREFIX is the class of label and NUM is the number within the class. 7618334Speter This is suitable for output with `assemble_name'. */ 7718334Speter 7818334Speter#undef ASM_GENERATE_INTERNAL_LABEL 7918334Speter#define ASM_GENERATE_INTERNAL_LABEL(BUF,PREFIX,NUMBER) \ 8090075Sobrien sprintf ((BUF), "%s%s%ld", LOCAL_LABEL_PREFIX, (PREFIX), (long)(NUMBER)) 8118334Speter 8290075Sobrien/* The prefix to add to user-visible assembler symbols. */ 8318334Speter 8450397Sobrien#undef USER_LABEL_PREFIX 8550397Sobrien#define USER_LABEL_PREFIX "" 86