home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume5 / smallc / part3 / vax / crunvax.c < prev    next >
Encoding:
Text File  |  1986-11-30  |  1.2 KB  |  91 lines

  1. #asm
  2. #    csa09 Small C v1 comparison support
  3. #    All are dyadic except for lneg.
  4. .globl    eq
  5. .globl    ne
  6. .globl    lt
  7. .globl    le
  8. .globl    gt
  9. .globl    ge
  10. .globl    ult
  11. .globl    ule
  12. .globl    ugt
  13. .globl    uge
  14. .globl    lneg
  15. .globl    bool
  16. .globl    case
  17. .globl    _Xstktop
  18.  
  19. eq:    cmpl    r0,4(sp)
  20.     jeql    true
  21.     jbr    false
  22.  
  23. ne:    cmpl    r0,4(sp)
  24.     jneq    true
  25.     jbr    false
  26.  
  27. lt:    cmpl    r0,4(sp)
  28.     jgtr    true
  29.     jbr    false
  30.  
  31. le:    cmpl    r0,4(sp)
  32.     jgeq    true
  33.     jbr    false
  34.  
  35. gt:    cmpl    r0,4(sp)
  36.     jlss    true
  37.     jbr    false
  38.  
  39. ge:    cmpl    r0,4(sp)
  40.     jleq    true
  41.     jbr    false
  42.  
  43. ult:    cmpl    r0,4(sp)
  44.     jgtru    true
  45.     jbr    false
  46.  
  47. ule:    cmpl    r0,4(sp)
  48.     jgequ    true
  49.     jbr    false
  50.  
  51. ugt:    cmpl    r0,4(sp)
  52.     jlequ    true
  53.     jbr    false
  54.  
  55. uge:    cmpl    r0,4(sp)
  56.     jlssu    true
  57.     jbr    false
  58.  
  59. lneg:    cmpl    r0,$0
  60.     jeql    ltrue
  61.     movl    $0,r0
  62.     rsb
  63. ltrue:    movl    $1,r0
  64.     rsb
  65.  
  66. bool:    jsb    lneg
  67.     jbr    lneg
  68.  
  69. true:    movl    $1,r0
  70.     movl    (sp),r3
  71.     addl2    $8,sp
  72.     jmp    (r3)
  73.  
  74. false:    movl    $0,r0
  75.     movl    (sp),r3
  76.     addl2    $8,sp
  77.     jmp    (r3)
  78. _Xstktop:    movl    sp,r0
  79.     rsb
  80. #    Case jump, value is in r0, case table in (sp)
  81. case:    movl    (sp)+,r1    # pick up case pointer
  82. casl:
  83.     movl    (r1)+,r2    # pick up value.
  84.     movl    (r1)+,r3    # pick up label.
  85.     bneq    notdef        # if not default, check it
  86.     jmp    (r2)        # is default, go do it.
  87. notdef:    cmpl    r0,r2        # compare table value with switch value
  88.     bneq    casl        # go for next table ent if not
  89.     jmp    (r3)        # otherwise, jump to it.
  90. #endasm
  91.