Annotation of 3BSD/cmd/px/05index.s, revision 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.