Annotation of 3BSD/cmd/px/02relset.s, revision 1.1.1.1

1.1       root        1: #
                      2: # 02relset.s
                      3: #
                      4: # RELATIONALS ON SETS
                      5: #
                      6: _RELT:
                      7:        cvtbl   (r10)+,r5       #r5 has jump opcode
                      8:        cvtwl   (r10)+,r1       #r1 has comparison length (bytes)
                      9:        movl    r1,r4           #r4 has stack length
                     10:        blbc    r4,l0211
                     11:        incl    r4
                     12: l0211:
                     13:        addl3   sp,r4,r3        #r3 has addr of lower operand
                     14:        addl2   r3,r4           #r4 points to cleared stack
                     15:        ashl    $1,r5,r5        #maintain compatability
                     16:        jsb     *settab(r5)     #calc condition, return boolean in r0
                     17:        movl    r4,sp           #reset stack
                     18:        cmpl    r5,$20          #check for branch
                     19:        bgtr    l0212
                     20:        movw    r0,-(sp)        #put boolean on stack
                     21:        jmp     (r8)
                     22: l0212:
                     23:        tstl    r0
                     24:        beql    l0213
                     25:        addl2   $2,r10          #continue on true
                     26:        jmp     (r8)
                     27: l0213:
                     28:        cvtwl   (r10),r0        #skip on false
                     29:        addl2   r0,r10
                     30:        jmp     (r8)
                     31: 
                     32:        .align  1
                     33: settab:                        #condition code branch table
                     34:        .long   seteq   #generate boolean answer
                     35:        .long   setne
                     36:        .long   setlt
                     37:        .long   setgt
                     38:        .long   setle
                     39:        .long   setge
                     40:        .long   seteq   #branch on condition false
                     41:        .long   setne
                     42:        .long   setlt
                     43:        .long   setgt
                     44:        .long   setle
                     45:        .long   setge
                     46: 
                     47: setlt:
                     48:        moval   4(sp),r2        #skip over return address
                     49:        ashl    $-1,r1,r1
                     50: l0214:
                     51:        bicw3   (r2),(r3),r0
                     52:        bneq    false
                     53:        bicw2   (r3)+,(r2)+
                     54:        bneq    l0216           #need only check <= for remainder of set
                     55:        sobgtr  r1,l0214
                     56: false:
                     57:        clrl    r0
                     58:        rsb
                     59: setle:
                     60:        moval   4(sp),r2
                     61:        ashl    $-1,r1,r1
                     62: l0215:
                     63:        bicw2   (r2)+,(r3)+
                     64:        bneq    false
                     65: l0216:
                     66:        sobgtr  r1,l0215
                     67: true:
                     68:        movl    $1,r0
                     69:        rsb
                     70: seteq:
                     71:        cmpc3   r1,(r3),4(sp)
                     72:        beql    true
                     73:        clrl    r0
                     74:        rsb
                     75: setne:
                     76:        cmpc3   r1,(r3),4(sp)
                     77:        bneq    true
                     78:        clrl    r0
                     79:        rsb
                     80: setgt:
                     81:        moval   4(sp),r2
                     82:        ashl    $-1,r1,r1
                     83: l0217:
                     84:        bicw3   (r3),(r2),r0
                     85:        bneq    false
                     86:        bicw2   (r2)+,(r3)+
                     87:        bneq    l0219           #need only check >= for remainder of set
                     88:        sobgtr  r1,l0217
                     89:        clrl    r0
                     90:        rsb
                     91: setge:
                     92:        moval   4(sp),r2
                     93:        ashl    $-1,r1,r1
                     94: l0218:
                     95:        bicw2   (r3)+,(r2)+
                     96:        bneq    false
                     97: l0219:
                     98:        sobgtr  r1,l0218
                     99:        movl    $1,r0
                    100:        rsb

unix.superglobalmegacorp.com

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