Annotation of 3BSD/cmd/px/05index.s, revision 1.1.1.1

1.1       root        1: #
                      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)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.