Quick Search:

View

Revision:
Expand:  
Changeset: MAIN:plunky:20120422210740

Diff

Diff from 1.17 to:

Annotations

Annotate by Age | Author | Mixed | None
/fisheye/browse/pcc/pcc/arch/i386/flocal.c

Annotated File View

plunky
1.17
1 /*      $Id: flocal.c,v 1.17 2012/04/22 21:07:40 plunky Exp $   */
ragge
1.1
2 /*
3  * Copyright(C) Caldera International Inc. 2001-2002. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * Redistributions of source code and documentation must retain the above
10  * copyright notice, this list of conditions and the following disclaimer.
11  * Redistributions in binary form must reproduce the above copyright
ragge
1.6
12  * notice, this list of conditionsand the following disclaimer in the
ragge
1.1
13  * documentation and/or other materials provided with the distribution.
14  * All advertising materials mentioning features or use of this software
15  * must display the following acknowledgement:
16  *      This product includes software developed or owned by Caldera
17  *      International, Inc.
18  * Neither the name of Caldera International, Inc. nor the names of other
19  * contributors may be used to endorse or promote products derived from
20  * this software without specific prior written permission.
21  *
22  * USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
23  * INTERNATIONAL, INC. AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR
24  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26  * DISCLAIMED.  IN NO EVENT SHALL CALDERA INTERNATIONAL, INC. BE LIABLE
27  * FOR ANY DIRECT, INDIRECT INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30  * HOWEVER CAUSED AND ON ANY THEORY OFLIABILITY, WHETHER IN CONTRACT,
31  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
32  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
33  * POSSIBILITY OF SUCH DAMAGE.
34  */
ragge
1.6
35 #include <stdio.h>
36
37 #include "defines.h"
ragge
1.1
38 #include "defs.h"
ragge
1.6
39
40 void
ragge
1.8
41 prchars(int *s)
ragge
1.6
42 {
ragge
1.8
43         printf("\t.byte 0%o,0%o\n"s[0], s[1]);
ragge
1.6
44 }
45
46 void
ragge
1.8
47 setloc(int l)
48 {
ragge
1.11
49         static int lastloc = -1;
ragge
1.8
50         static char *loctbl[] =
51             { "text""data""section .rodata""section .rodata""bss" };
ragge
1.11
52         if (l == lastloc)
53                 return;
ragge
1.8
54         printf("\t.%s\n"loctbl[l]);
ragge
1.11
55         lastloc = l;
ragge
1.8
56 }
57
ragge
1.6
58 #ifdef FCOM
59
ragge
1.1
60
61 /*
62         PDP11-780/VAX - SPECIFIC PRINTING ROUTINES
63 */
64
ragge
1.8
65 /*
66  * Called just before return from a subroutine.
67  */
ragge
1.2
68 void
ragge
1.8
69 goret(int type)
ragge
1.1
70 {
71 }
72
ragge
1.8
73 /*
74  * Print out a label.
75  */
ragge
1.3
76 void
ragge
1.8
77 prlabel(int k)
ragge
1.1
78 {
ragge
1.7
79         printf(LABFMT ":\n"k);
ragge
1.1
80 }
81
ragge
1.11
82 /*
83  * Print naming for location.
84  * name[0] is location type.
85  */
86 void
87 prnloc(char *name)
88 {
89         if (*name == '0')
90                 setloc(DATA);
91         else
92                 fatal("unhandled prnloc %c", *name);
93         printf("%s:\n"name+1);
94 }
ragge
1.1
95
ragge
1.8
96 /*
97  * Print integer constant.
98  */
ragge
1.3
99 void
ragge
1.14
100 prconi(FILE *fpint typeftnint n)
ragge
1.1
101 {
ragge
1.14
102         fprintf(fp"\t%s\t%ld\n", (type==TYSHORT ? ".word" : ".long"), n);
ragge
1.1
103 }
104
ragge
1.8
105 /*
106  * Print address constant, given as a label number.
107  */
ragge
1.3
108 void
ragge
1.8
109 prcona(ftnint a)
ragge
1.1
110 {
ragge
1.8
111         printf("\t.long\t" LABFMT "\n", (int)a);
ragge
1.1
112 }
113
ragge
1.8
114 /*
115  * Print out a floating constant.
116  */
ragge
1.3
117 void
ragge
1.14
118 prconr(FILE *fpint typedouble x)
ragge
1.1
119 {
ragge
1.14
120         fprintf(fp"\t%s\t0f%e\n", (type==TYREAL ? ".float" : ".double"), x);
ragge
1.1
121 }
122
ragge
1.2
123 void
ragge
1.7
124 preven(int k)
ragge
1.1
125 {
ragge
1.9
126         if (k > 1)
127                 printf("\t.align\t%d\n"k);
ragge
1.1
128 }
129
ragge
1.9
130 /*
ragge
1.7
131  * Convert a tag and offset into the symtab table to a string.
132  * An external string is never longer than XL bytes.
133  */
134 char *
135 memname(int stgint mem)
ragge
1.1
136 {
ragge
1.7
137 #define MLEN    (XL + 10)
138         char *s = malloc(MLEN);
ragge
1.1
139
ragge
1.7
140         switch(stg) {
ragge
1.1
141         case STGCOMMON:
142         case STGEXT:
ragge
1.7
143                 snprintf(sMLEN"%s"varstr(XLextsymtab[mem].extname));
ragge
1.1
144                 break;
145
146         case STGBSS:
147         case STGINIT:
ragge
1.7
148                 snprintf(sMLEN"v.%d"mem);
ragge
1.1
149                 break;
150
151         case STGCONST:
ragge
1.7
152                 snprintf(sMLEN".L%d"mem);
ragge
1.1
153                 break;
154
155         case STGEQUIV:
ragge
1.7
156                 snprintf(sMLEN"q.%d"mem);
ragge
1.1
157                 break;
158
159         default:
160                 fatal1("memname: invalid vstg %d"stg);
161         }
ragge
1.7
162         return(s);
ragge
1.1
163 }
164
ragge
1.2
165 void
ragge
1.9
166 prlocvar(char *sftnint len)
ragge
1.1
167 {
ragge
1.8
168         printf("\t.lcomm\t%s,%ld\n"slen);
ragge
1.1
169 }
170
171
ragge
1.2
172 void
ragge
1.8
173 prext(char *nameftnint lengint init)
ragge
1.1
174 {
ragge
1.8
175         if(leng == 0)
ragge
1.9
176                 printf("\t.globl\t%s\n"name);
ragge
1.8
177         else
ragge
1.9
178                 printf("\t.comm\t%s,%ld\n"nameleng);
ragge
1.1
179 }
180
ragge
1.2
181 void
plunky
1.17
182 prendproc(void)
ragge
1.1
183 {
184 }
185
ragge
1.2
186 void
plunky
1.17
187 prtail(void)
ragge
1.1
188 {
189 }
190
ragge
1.2
191 void
ragge
1.8
192 prolog(struct entrypoint *epstruct bigblock *argvec)
193 {
ragge
1.9
194         /* Ignore for now.  ENTRY is not supported */
ragge
1.1
195 }
196
ragge
1.2
197 void
plunky
1.17
198 prdbginfo(void)
ragge
1.1
199 {
200 }
201
ragge
1.7
202 static void
gmcgarry
1.15
203 fcheck(NODE *pvoid *arg)
ragge
1.7
204 {
205         NODE *r, *l;
206
207         switch (p->n_op) {
208         case CALL/* fix arguments */
209                 for (r = p->n_rightr->n_op == CMr = r->n_left) {
210                         r->n_right = mkunode(FUNARGr->n_right0,
211                             r->n_right->n_type);
212                 }
213                 l = talloc();
214                 *l = *r;
215                 r->n_op = FUNARG;
216                 r->n_left = l;
217                 r->n_type = l->n_type;
218                 break;
219         }
220 }
221
222 /*
223  * Called just before the tree is written out to pass2.
224  */
225 void p2tree(NODE *p);
226 void
227 p2tree(NODE *p)
228 {
gmcgarry
1.15
229         walkf(pfcheck0);
ragge
1.7
230 }
ragge
1.6
231 #endif /* FCOM */
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-10-02 18:35 +0200