Commit | Line | Data |
---|---|---|
b202b2da | 1 | #\f |
31cef89c BJ |
2 | # Copyright (c) 1979 Regents of the University of California |
3 | # | |
4 | # char sccsid[] = "@(#)05index.s 4.1 10/10/80"; | |
b202b2da CH |
5 | # |
6 | # OFF, INDEX and NIL | |
7 | # | |
8 | _OFF: | |
9 | cvtbl (r10)+,r0 | |
10 | bneq l0501 | |
31cef89c | 11 | movzwl (r10)+,r0 |
b202b2da CH |
12 | l0501: |
13 | addl2 r0,(sp) | |
14 | jmp (r8) | |
15 | _INX2: | |
16 | cvtbl (r10)+,r0 | |
17 | bneq l0502 | |
18 | cvtwl (r10)+,r0 #r0 has size | |
19 | l0502: | |
31cef89c BJ |
20 | clrl r3 #r3 has base subscript |
21 | subw3 (r10)+,(sp)+,r3 | |
22 | blss esubscr #check lower bound | |
23 | cmpw r3,(r10)+ #check upper bound | |
24 | bgtru esubscr | |
25 | mull2 r0,r3 #calc byte offset | |
26 | addl2 r3,(sp) #calculate actual address | |
b202b2da CH |
27 | jmp (r8) |
28 | _INX4: | |
29 | cvtbl (r10)+,r0 | |
30 | bneq l0503 | |
31 | cvtwl (r10)+,r0 #r0 has size | |
32 | l0503: | |
33 | cvtwl (r10)+,r1 #r1 has lower bound | |
31cef89c BJ |
34 | movzwl (r10)+,r2 #r2 has upper-lower bound |
35 | subl3 r1,(sp)+,r3 #r3 has base subscript | |
36 | cmpl r3,r2 #check for out of bounds | |
37 | bgtru esubscr | |
38 | mull2 r0,r3 #calc byte offset | |
39 | addl2 r3,(sp) #calculate actual address | |
b202b2da | 40 | jmp (r8) |
31cef89c BJ |
41 | esubscr: |
42 | movl $ESUBSCR,_perrno | |
43 | jbr error | |
b202b2da CH |
44 | _NIL: |
45 | incl r10 | |
46 | tstl (sp) | |
47 | jeql l0504 | |
48 | jmp (r8) | |
49 | l0504: | |
50 | movw $ENILPTR,_perrno | |
51 | jbr error | |
52 | _INX4P2: | |
53 | cvtbl (r10)+,r0 #r0 has shift amount | |
54 | cvtwl (r10)+,r2 #r2 has lower bound | |
55 | subl3 r2,(sp)+,r1 #r1 has base subscript | |
56 | ashl r0,r1,r1 | |
57 | addl2 r1,(sp) | |
58 | jmp (r8) | |
59 | _INX2P2: | |
60 | cvtbl (r10)+,r0 #r0 has shift amount | |
31cef89c BJ |
61 | cvtwl (r10)+,r1 #r1 has base array value |
62 | cvtwl (sp)+,r2 #r2 has subscript value | |
63 | subl2 r1,r2 #r2 has element offset | |
64 | ashl r0,r2,r2 #r2 has byte offset | |
65 | addl2 r2,(sp) | |
b202b2da | 66 | jmp (r8) |