Research V7 development
[unix-history] / usr / src / cmd / as / as19.s
CommitLineData
8d8c20ed
DR
1/
2/
3
4/ a9 -- pdp-11 assembler pass 1
5
6eae = 0
7
8/ key to types
9
10/ 0 undefined
11/ 1 absolute
12/ 2 text
13/ 3 data
14/ 4 bss
15/ 5 flop freg,dst (movfo, = stcfd)
16/ 6 branch
17/ 7 jsr
18/ 10 rts
19/ 11 sys
20/ 12 movf (=ldf,stf)
21/ 13 double operand (mov)
22/ 14 flop fsrc,freg (addf)
23/ 15 single operand (clr)
24/ 16 .byte
25/ 17 string (.ascii, "<")
26/ 20 .even
27/ 21 .if
28/ 22 .endif
29/ 23 .globl
30/ 24 register
31/ 25 .text
32/ 26 .data
33/ 27 .bss
34/ 30 mul,div, etc
35/ 31 sob
36/ 32 .comm
37/ 33 estimated text
38/ 34 estimated data
39/ 35 jbr
40/ 36 jeq, jne, etc
41
42 .data
43symtab:
44/ special variables
45
46<.\0\0\0\0\0\0\0>; dotrel:02; dot:000000
47<..\0\0\0\0\0\0>; 01; dotdot:000000
48
49/ register
50
51<r0\0\0\0\0\0\0>; 24;000000
52<r1\0\0\0\0\0\0>; 24;000001
53<r2\0\0\0\0\0\0>; 24;000002
54<r3\0\0\0\0\0\0>; 24;000003
55<r4\0\0\0\0\0\0>; 24;000004
56<r5\0\0\0\0\0\0>; 24;000005
57<sp\0\0\0\0\0\0>; 24;000006
58<pc\0\0\0\0\0\0>; 24;000007
59
60.if eae
61
62/eae & switches
63
64<csw\0\0\0\0\0>; 01;177570
65<div\0\0\0\0\0>; 01;177300
66<ac\0\0\0\0\0\0>; 01;177302
67<mq\0\0\0\0\0\0>; 01;177304
68<mul\0\0\0\0\0>; 01;177306
69<sc\0\0\0\0\0\0>; 01;177310
70<sr\0\0\0\0\0\0>; 01;177311
71<nor\0\0\0\0\0>; 01;177312
72<lsh\0\0\0\0\0>; 01;177314
73<ash\0\0\0\0\0>; 01;177316
74
75.endif
76
77/ double operand
78
79<mov\0\0\0\0\0>; 13;0010000
80<movb\0\0\0\0>; 13;0110000
81<cmp\0\0\0\0\0>; 13;0020000
82<cmpb\0\0\0\0>; 13;0120000
83<bit\0\0\0\0\0>; 13;0030000
84<bitb\0\0\0\0>; 13;0130000
85<bic\0\0\0\0\0>; 13;0040000
86<bicb\0\0\0\0>; 13;0140000
87<bis\0\0\0\0\0>; 13;0050000
88<bisb\0\0\0\0>; 13;0150000
89<add\0\0\0\0\0>; 13;0060000
90<sub\0\0\0\0\0>; 13;0160000
91
92/ branch
93
94<br\0\0\0\0\0\0>; 06;0000400
95<bne\0\0\0\0\0>; 06;0001000
96<beq\0\0\0\0\0>; 06;0001400
97<bge\0\0\0\0\0>; 06;0002000
98<blt\0\0\0\0\0>; 06;0002400
99<bgt\0\0\0\0\0>; 06;0003000
100<ble\0\0\0\0\0>; 06;0003400
101<bpl\0\0\0\0\0>; 06;0100000
102<bmi\0\0\0\0\0>; 06;0100400
103<bhi\0\0\0\0\0>; 06;0101000
104<blos\0\0\0\0>; 06;0101400
105<bvc\0\0\0\0\0>; 06;0102000
106<bvs\0\0\0\0\0>; 06;0102400
107<bhis\0\0\0\0>; 06;0103000
108<bec\0\0\0\0\0>; 06;0103000
109<bcc\0\0\0\0\0>; 06;0103000
110<blo\0\0\0\0\0>; 06;0103400
111<bcs\0\0\0\0\0>; 06;0103400
112<bes\0\0\0\0\0>; 06;0103400
113
114/ jump/branch type
115
116<jbr\0\0\0\0\0>; 35;0000400
117<jne\0\0\0\0\0>; 36;0001000
118<jeq\0\0\0\0\0>; 36;0001400
119<jge\0\0\0\0\0>; 36;0002000
120<jlt\0\0\0\0\0>; 36;0002400
121<jgt\0\0\0\0\0>; 36;0003000
122<jle\0\0\0\0\0>; 36;0003400
123<jpl\0\0\0\0\0>; 36;0100000
124<jmi\0\0\0\0\0>; 36;0100400
125<jhi\0\0\0\0\0>; 36;0101000
126<jlos\0\0\0\0>; 36;0101400
127<jvc\0\0\0\0\0>; 36;0102000
128<jvs\0\0\0\0\0>; 36;0102400
129<jhis\0\0\0\0>; 36;0103000
130<jec\0\0\0\0\0>; 36;0103000
131<jcc\0\0\0\0\0>; 36;0103000
132<jlo\0\0\0\0\0>; 36;0103400
133<jcs\0\0\0\0\0>; 36;0103400
134<jes\0\0\0\0\0>; 36;0103400
135
136/ single operand
137
138<clr\0\0\0\0\0>; 15;0005000
139<clrb\0\0\0\0>; 15;0105000
140<com\0\0\0\0\0>; 15;0005100
141<comb\0\0\0\0>; 15;0105100
142<inc\0\0\0\0\0>; 15;0005200
143<incb\0\0\0\0>; 15;0105200
144<dec\0\0\0\0\0>; 15;0005300
145<decb\0\0\0\0>; 15;0105300
146<neg\0\0\0\0\0>; 15;0005400
147<negb\0\0\0\0>; 15;0105400
148<adc\0\0\0\0\0>; 15;0005500
149<adcb\0\0\0\0>; 15;0105500
150<sbc\0\0\0\0\0>; 15;0005600
151<sbcb\0\0\0\0>; 15;0105600
152<tst\0\0\0\0\0>; 15;0005700
153<tstb\0\0\0\0>; 15;0105700
154<ror\0\0\0\0\0>; 15;0006000
155<rorb\0\0\0\0>; 15;0106000
156<rol\0\0\0\0\0>; 15;0006100
157<rolb\0\0\0\0>; 15;0106100
158<asr\0\0\0\0\0>; 15;0006200
159<asrb\0\0\0\0>; 15;0106200
160<asl\0\0\0\0\0>; 15;0006300
161<aslb\0\0\0\0>; 15;0106300
162<jmp\0\0\0\0\0>; 15;0000100
163<swab\0\0\0\0>; 15;0000300
164
165/ jsr
166
167<jsr\0\0\0\0\0>; 07;0004000
168
169/ rts
170
171<rts\0\0\0\0\0>; 010;000200
172
173/ simple operand
174
175<sys\0\0\0\0\0>; 011;104400
176
177/ flag-setting
178
179<clc\0\0\0\0\0>; 01;0000241
180<clv\0\0\0\0\0>; 01;0000242
181<clz\0\0\0\0\0>; 01;0000244
182<cln\0\0\0\0\0>; 01;0000250
183<sec\0\0\0\0\0>; 01;0000261
184<sev\0\0\0\0\0>; 01;0000262
185<sez\0\0\0\0\0>; 01;0000264
186<sen\0\0\0\0\0>; 01;0000270
187
188/ floating point ops
189
190<cfcc\0\0\0\0>; 01;170000
191<setf\0\0\0\0>; 01;170001
192<setd\0\0\0\0>; 01;170011
193<seti\0\0\0\0>; 01;170002
194<setl\0\0\0\0>; 01;170012
195<clrf\0\0\0\0>; 15;170400
196<negf\0\0\0\0>; 15;170700
197<absf\0\0\0\0>; 15;170600
198<tstf\0\0\0\0>; 15;170500
199<movf\0\0\0\0>; 12;172400
200<movif\0\0\0>; 14;177000
201<movfi\0\0\0>; 05;175400
202<movof\0\0\0>; 14;177400
203<movfo\0\0\0>; 05;176000
204<addf\0\0\0\0>; 14;172000
205<subf\0\0\0\0>; 14;173000
206<mulf\0\0\0\0>; 14;171000
207<divf\0\0\0\0>; 14;174400
208<cmpf\0\0\0\0>; 14;173400
209<modf\0\0\0\0>; 14;171400
210<movie\0\0\0>; 14;176400
211<movei\0\0\0>; 05;175000
212<ldfps\0\0\0>; 15;170100
213<stfps\0\0\0>; 15;170200
214<fr0\0\0\0\0\0>; 24;000000
215<fr1\0\0\0\0\0>; 24;000001
216<fr2\0\0\0\0\0>; 24;000002
217<fr3\0\0\0\0\0>; 24;000003
218<fr4\0\0\0\0\0>; 24;000004
219<fr5\0\0\0\0\0>; 24;000005
220
221/ 11/45 operations
222
223<als\0\0\0\0\0>; 30;072000
224<alsc\0\0\0\0>; 30;073000
225<mpy\0\0\0\0\0>; 30;070000
226.if eae-1
227<mul\0\0\0\0\0>; 30;070000
228<div\0\0\0\0\0>; 30;071000
229<ash\0\0\0\0\0>; 30;072000
230<ashc\0\0\0\0>; 30;073000
231.endif
232<dvd\0\0\0\0\0>; 30;071000
233<xor\0\0\0\0\0>; 07;074000
234<sxt\0\0\0\0\0>; 15;006700
235<mark\0\0\0\0>; 11;006400
236<sob\0\0\0\0\0>; 31;077000
237
238/ specials
239
240<.byte\0\0\0>; 16;000000
241<.even\0\0\0>; 20;000000
242<.if\0\0\0\0\0>; 21;000000
243<.endif\0\0>; 22;000000
244<.globl\0\0>; 23;000000
245<.text\0\0\0>; 25;000000
246<.data\0\0\0>; 26;000000
247<.bss\0\0\0\0>; 27;000000
248<.comm\0\0\0>; 32;000000
249
250ebsymtab:
251
252
253start:
254 sys signal; 2; 1
255 ror r0
256 bcs 1f
257 sys signal; 2; aexit
2581:
259 mov (sp)+,r0
260 tst (sp)+
2611:
262 mov (sp),r1
263 cmpb (r1),$'-
264 bne 1f
265 tst (sp)+
266 dec r0
267 cmpb 1(r1),$'u
268 bne 2f
269 movb $'g,unglob
270 br 1b
2712:
272 tstb 1(r1)
273 bne 2f
274 movb $'g,unglob
275 br 1b
2762:
277 cmpb 1(r1),$'o
278 bne 1f
279 mov (sp),outfp
280 tst (sp)+
281 dec r0
282 br 1b
2831:
284 movb r0,nargs
285 tst -(sp)
286 mov sp,curarg
287 jsr r5,fcreat; a.tmp1
288 movb r0,pof
289 jsr r5,fcreat; a.tmp2
290 movb r0,fbfil
291 jsr pc,setup
292 jmp go
293
294setup:
295 mov $symtab,r1
2961:
297 clr r3
298 mov $8,r2
299 mov r1,-(sp)
3002:
301 movb (r1)+,r4
302 beq 2f
303 add r4,r3
304 swab r3
305 sob r2,2b
3062:
307 clr r2
308 div $hshsiz,r2
309 ashc $1,r2
310 add $hshtab,r3
3114:
312 sub r2,r3
313 cmp r3,$hshtab
314 bhi 3f
315 add $2*hshsiz,r3
3163:
317 tst -(r3)
318 bne 4b
319 mov (sp)+,r1
320 mov r1,(r3)
321 add $12.,r1
322 cmp r1,$ebsymtab
323 blo 1b
324 rts pc
325
326/overlay buffer
327inbuf = setup
328. =inbuf+512.
329