crc68.s
上传用户:andy_li
上传日期:2007-01-06
资源大小:1019k
文件大小:2k
源码类别:

压缩解压

开发平台:

MultiPlatform

  1. .text
  2. .globl  _crc32          ; (ulg val, uch *buf, extent bufsize)
  3. .globl  _get_crc_table  ; ulg *get_crc_table(void)
  4. _crc32:
  5.         move.l  8(sp),d0
  6.         bne    valid
  7.         moveq  #0,d0
  8.         rts
  9. valid:  movem.l d2/d3,-(sp)
  10. jsr     _get_crc_table
  11.         move.l  d0,a0 
  12.         move.l  12(sp),d0 
  13.         move.l  16(sp),a1 
  14.         move.l  20(sp),d1 
  15.         not.l   d0 
  16.         move.l  d1,d2 
  17.         lsr.l   #3,d1 
  18.         bra     decr8
  19. loop8:  moveq  #0,d3 
  20. move.b (a1)+,d3 
  21. eor.b  d0,d3
  22. lsl.w  #2,d3
  23. move.l 0(a0,d3.w),d3
  24. lsr.l  #8,d0
  25. eor.l  d3,d0  
  26.         moveq  #0,d3 
  27. move.b (a1)+,d3 
  28. eor.b  d0,d3 
  29. lsl.w  #2,d3 
  30. move.l 0(a0,d3.w),d3 
  31. lsr.l  #8,d0 
  32. eor.l  d3,d0  
  33.         moveq  #0,d3 
  34. move.b (a1)+,d3 
  35. eor.b  d0,d3 
  36. lsl.w  #2,d3 
  37. move.l 0(a0,d3.w),d3 
  38. lsr.l  #8,d0 
  39. eor.l  d3,d0  
  40.         moveq  #0,d3 
  41. move.b (a1)+,d3 
  42. eor.b  d0,d3 
  43. lsl.w  #2,d3 
  44. move.l 0(a0,d3.w),d3 
  45. lsr.l  #8,d0 
  46. eor.l  d3,d0  
  47.         moveq  #0,d3 
  48. move.b (a1)+,d3 
  49. eor.b  d0,d3 
  50. lsl.w  #2,d3 
  51. move.l 0(a0,d3.w),d3 
  52. lsr.l  #8,d0 
  53. eor.l  d3,d0  
  54.         moveq  #0,d3 
  55. move.b (a1)+,d3 
  56. eor.b  d0,d3 
  57. lsl.w  #2,d3 
  58. move.l 0(a0,d3.w),d3 
  59. lsr.l  #8,d0 
  60. eor.l  d3,d0  
  61.         moveq  #0,d3 
  62. move.b (a1)+,d3 
  63. eor.b  d0,d3 
  64. lsl.w  #2,d3 
  65. move.l 0(a0,d3.w),d3 
  66. lsr.l  #8,d0 
  67. eor.l  d3,d0  
  68.         moveq  #0,d3 
  69. move.b (a1)+,d3 
  70. eor.b  d0,d3 
  71. lsl.w  #2,d3 
  72. move.l 0(a0,d3.w),d3 
  73. lsr.l  #8,d0 
  74. eor.l  d3,d0  
  75. decr8:  dbra   d1,loop8
  76. and.w   #7,d2 
  77.         bra     decr1
  78. loop1:  moveq  #0,d3 
  79. move.b (a1)+,d3 
  80. eor.b  d0,d3 
  81. lsl.w  #2,d3 
  82. move.l 0(a0,d3.w),d3 
  83. lsr.l  #8,d0 
  84. eor.l  d3,d0  
  85. decr1:  dbra   d2,loop1
  86. done:   movem.l (sp)+,d2/d3 
  87.         not.l   d0 
  88.         rts