Commit | Line | Data |
---|---|---|
b202b2da CH |
1 | #\f |
2 | # 05index.s | |
3 | # | |
4 | # OFF, INDEX and NIL | |
5 | # | |
6 | _OFF: | |
7 | cvtbl (r10)+,r0 | |
8 | bneq l0501 | |
9 | cvtwl (r10)+,r0 | |
10 | l0501: | |
11 | addl2 r0,(sp) | |
12 | jmp (r8) | |
13 | _INX2: | |
14 | cvtbl (r10)+,r0 | |
15 | bneq l0502 | |
16 | cvtwl (r10)+,r0 #r0 has size | |
17 | l0502: | |
18 | cvtwl (r10)+,r1 #r1 has lower bound | |
19 | cvtwl (r10)+,r2 #r2 has upper bound | |
20 | cvtwl (sp)+,r3 #r3 contains subscript | |
21 | subl2 r1,r3 #r3 has base subscript | |
22 | index r3,$0,r2,r0,$0,r1 #r1 has calculated offset | |
23 | addl2 r1,(sp) #calculate actual address | |
24 | jmp (r8) | |
25 | _INX4: | |
26 | cvtbl (r10)+,r0 | |
27 | bneq l0503 | |
28 | cvtwl (r10)+,r0 #r0 has size | |
29 | l0503: | |
30 | cvtwl (r10)+,r1 #r1 has lower bound | |
31 | cvtwl (r10)+,r2 #r2 has upper bound | |
32 | movl (sp)+,r3 #r3 contains subscript | |
33 | subl2 r1,r3 #r3 has base subscript | |
34 | index r3,$0,r2,r0,$0,r1 #r1 has calculated offset | |
35 | addl2 r1,(sp) #calculate actual address | |
36 | jmp (r8) | |
37 | _NIL: | |
38 | incl r10 | |
39 | tstl (sp) | |
40 | jeql l0504 | |
41 | jmp (r8) | |
42 | l0504: | |
43 | movw $ENILPTR,_perrno | |
44 | jbr error | |
45 | _INX4P2: | |
46 | cvtbl (r10)+,r0 #r0 has shift amount | |
47 | cvtwl (r10)+,r2 #r2 has lower bound | |
48 | subl3 r2,(sp)+,r1 #r1 has base subscript | |
49 | ashl r0,r1,r1 | |
50 | addl2 r1,(sp) | |
51 | jmp (r8) | |
52 | _INX2P2: | |
53 | cvtbl (r10)+,r0 #r0 has shift amount | |
54 | clrl r1 #clear upper half of r1 | |
55 | subw3 (r10)+,(sp)+,r1 #r1 has base subscript | |
56 | ashl r0,r1,r1 | |
57 | addl2 r1,(sp) | |
58 | jmp (r8) |