Pristine Ack-5.5
[Ack-5.5.git] / util / ceg / ce_back / as_back / bottom.c
1 #include "header.h"
2
3 /* This file contains low-level routines for generating assembly code. */
4
5 int cur_seg = -1, saved = 0;
6 char name[256], labeltje[256];
7
8 File *codefile;
9
10
11 align_word()
12
13 /* The EM-definition demands that segments are aligned at a word boundary
14  */
15
16 {
17         switch ( cur_seg) {
18           case SEGTXT : return;
19           default     : fprint( codefile, ALIGN_FMT);
20         }
21 }
22
23
24 save_label( l)
25 char *l;
26 {
27         sprint( labeltje, "%s", l);
28         saved = 1;
29 }
30
31
32 dump_label()
33 {
34         if ( saved)  {
35                 align_word();
36                 symbol_definition( labeltje);
37         }
38         saved = 0;
39 }
40
41
42 char *extnd_pro( prcno)
43 int prcno;
44 {
45         sprint( name, "pro%d", prcno);
46         return( name);
47 }
48
49
50 char *extnd_start( prcno)
51 int prcno;
52 {
53         sprint( name, "start%d", prcno);
54         return( name);
55 }
56
57
58 char *extnd_name( s)
59 char *s;
60 {
61         sprint( name, NAME_FMT, s);
62         return( name);
63 }
64
65
66 char *extnd_dnam( s)
67 char *s;
68 {
69         sprint( name, DNAM_FMT, s);
70         return( name);
71 }
72
73
74 char *extnd_dlb( g)
75 arith g;
76 {
77         sprint( name, DLB_FMT, (long)g);
78         return( name);
79 }
80
81
82 char *extnd_ilb( l, prcno)
83 arith l;
84 {
85         sprint( name, ILB_FMT, prcno, (long) l);
86         return( name);
87 }
88
89
90 char *extnd_hol( hol)
91 int hol;
92 {
93         sprint( name, HOL_FMT, hol);
94         return( name);
95 }
96
97
98 char *extnd_part( d)
99 int d;
100 {
101         sprint( name, "part%x", d);
102         return( name);
103 }
104
105
106 char *extnd_cont( d)
107 int d;
108 {
109         sprint( name, "cont%x", d);
110         return( name);
111 }
112
113
114 char *extnd_main( d)
115 int d;
116 {
117         sprint( name, "main%x", d);
118         return( name);
119 }