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

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

unix.superglobalmegacorp.com

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