Mercurial > hg > CbC > CbC_gcc
annotate gcc/config/i386/gas.h @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 84e7813d76e9 |
children |
rev | line source |
---|---|
0 | 1 /* Definitions for Intel 386 using GAS. |
145 | 2 Copyright (C) 1988-2020 Free Software Foundation, Inc. |
0 | 3 |
4 This file is part of GCC. | |
5 | |
6 GCC 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 3, or (at your option) | |
9 any later version. | |
10 | |
11 GCC 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 GCC; see the file COPYING3. If not see | |
18 <http://www.gnu.org/licenses/>. */ | |
19 | |
20 /* Note that i386/seq-gas.h is a GAS configuration that does not use this | |
21 file. */ | |
22 | |
23 /* Use the bsd assembler syntax. */ | |
24 /* we need to do this because gas is really a bsd style assembler, | |
25 * and so doesn't work well this these att-isms: | |
26 * | |
27 * ASM_OUTPUT_SKIP is .set .,.+N, which isn't implemented in gas | |
28 * ASM_OUTPUT_LOCAL is done with .set .,.+N, but that can't be | |
29 * used to define bss static space | |
30 * | |
31 * Next is the question of whether to uses underscores. RMS didn't | |
32 * like this idea at first, but since it is now obvious that we | |
33 * need this separate tm file for use with gas, at least to get | |
34 * dbx debugging info, I think we should also switch to underscores. | |
35 * We can keep i386v for real att style output, and the few | |
36 * people who want both form will have to compile twice. | |
37 */ | |
38 | |
39 /* these come from i386/bsd.h, but are specific to sequent */ | |
40 #undef DBX_NO_XREFS | |
41 #undef DBX_CONTIN_LENGTH | |
42 | |
43 /* Output #ident as a .ident. */ | |
44 | |
111 | 45 #undef TARGET_ASM_OUTPUT_IDENT |
46 #define TARGET_ASM_OUTPUT_IDENT default_asm_output_ident_directive | |
0 | 47 |
48 /* In the past there was confusion as to what the argument to .align was | |
49 in GAS. For the last several years the rule has been this: for a.out | |
50 file formats that argument is LOG, and for all other file formats the | |
51 argument is 1<<LOG. | |
52 | |
53 However, GAS now has .p2align and .balign pseudo-ops so to remove any | |
54 doubt or guess work, and since this file is used for both a.out and other | |
55 file formats, we use one of them. */ | |
56 | |
57 #ifdef HAVE_GAS_BALIGN_AND_P2ALIGN | |
58 #undef ASM_OUTPUT_ALIGN | |
59 #define ASM_OUTPUT_ALIGN(FILE,LOG) \ | |
131 | 60 if ((LOG)!=0) fprintf ((FILE), "\t.balign %d\n", 1 << (LOG)) |
0 | 61 #endif |
62 | |
63 /* A C statement to output to the stdio stream FILE an assembler | |
64 command to advance the location counter to a multiple of 1<<LOG | |
65 bytes if it is within MAX_SKIP bytes. | |
66 | |
67 This is used to align code labels according to Intel recommendations. */ | |
68 | |
69 #ifdef HAVE_GAS_MAX_SKIP_P2ALIGN | |
70 # define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \ | |
131 | 71 if ((LOG) != 0) { \ |
72 if ((MAX_SKIP) == 0 || (MAX_SKIP) >= (1 << (LOG)) - 1) \ | |
73 fprintf ((FILE), "\t.p2align %d\n", (LOG)); \ | |
74 else \ | |
75 fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP)); \ | |
76 } | |
0 | 77 #endif |
78 | |
79 /* A C statement or statements which output an assembler instruction | |
80 opcode to the stdio stream STREAM. The macro-operand PTR is a | |
81 variable of type `char *' which points to the opcode name in its | |
82 "internal" form--the form that is written in the machine description. | |
83 | |
84 GAS version 1.38.1 doesn't understand the `repz' opcode mnemonic. | |
85 So use `repe' instead. */ | |
86 | |
87 #undef ASM_OUTPUT_OPCODE | |
88 #define ASM_OUTPUT_OPCODE(STREAM, PTR) \ | |
89 { \ | |
90 if ((PTR)[0] == 'r' \ | |
91 && (PTR)[1] == 'e' \ | |
92 && (PTR)[2] == 'p') \ | |
93 { \ | |
94 if ((PTR)[3] == 'z') \ | |
95 { \ | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
96 fputs ("repe", (STREAM)); \ |
0 | 97 (PTR) += 4; \ |
98 } \ | |
99 else if ((PTR)[3] == 'n' && (PTR)[4] == 'z') \ | |
100 { \ | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
101 fputs ("repne", (STREAM)); \ |
0 | 102 (PTR) += 5; \ |
103 } \ | |
104 } \ | |
105 else \ | |
106 ASM_OUTPUT_AVX_PREFIX ((STREAM), (PTR)); \ | |
107 } | |
108 | |
109 /* Define macro used to output shift-double opcodes when the shift | |
110 count is in %cl. Some assemblers require %cl as an argument; | |
111 some don't. | |
112 | |
113 GAS requires the %cl argument, so override i386/unix.h. */ | |
114 | |
115 #undef SHIFT_DOUBLE_OMITS_COUNT | |
116 #define SHIFT_DOUBLE_OMITS_COUNT 0 | |
117 | |
118 /* The comment-starter string as GAS expects it. */ | |
119 #undef ASM_COMMENT_START | |
120 #define ASM_COMMENT_START "#" | |
121 | |
122 #define TARGET_ASM_FILE_START_FILE_DIRECTIVE true |