Subversion Repositories Kolibri OS

Rev

Rev 4290 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ; by ManHunter / PCL
  2. ; http://www.manhunter.ru
  3. ;-----------------------------------------------------
  4. ; ”ã­ªæ¨ï ¯®«ã祭¨ï ¤«¨­ë áâப¨ (Fast)
  5. ;-----------------------------------------------------
  6. ; lpStr - 㪠§ â¥«ì ­  áâபã ASCIIZ
  7. ;   ¢ë室¥: EAX - ¤«¨­  áâப¨ ¡¥§ ãç¥â  § ¢¥àè î饣®
  8. ; ­ã«¥¢®£® ¡ ©â 
  9. ;-----------------------------------------------------
  10. ;proc    _lstrlen lpStr:DWORD
  11. ;        mov     eax, [lpStr]
  12. ;        sub     eax, 4
  13. ;@@:
  14. ;        add     eax, 4
  15. ;        cmp     byte [eax], 0
  16. ;        je      .szlen_lb1
  17. ;        cmp     byte [eax+1], 0
  18. ;        je      .szlen_lb2
  19. ;        cmp     byte [eax+2], 0
  20. ;        je      .szlen_lb3
  21. ;        cmp     byte [eax+3], 0
  22. ;        jne     @b
  23. ;        sub     eax, [lpStr]
  24. ;        add     eax, 3
  25. ;        ret
  26. ;.szlen_lb3:
  27. ;        sub     eax, [lpStr]
  28. ;        add     eax, 2
  29. ;        ret
  30. ;.szlen_lb2:
  31. ;        sub     eax, [lpStr]
  32. ;        add     eax, 1
  33. ;        ret
  34. ;.szlen_lb1:
  35. ;        sub     eax, [lpStr]
  36. ;        ret
  37. ;endp
  38.  
  39. ;-----------------------------------------------------
  40. ; ”ã­ªæ¨ï ¯®«ã祭¨ï ¤«¨­ë áâப¨
  41. ;-----------------------------------------------------
  42. ; lpStr - 㪠§ â¥«ì ­  áâபã ASCIIZ
  43. ;   ¢ë室¥: EAX - ¤«¨­  áâப¨ ¡¥§ ãç¥â  § ¢¥àè î饣®
  44. ; ­ã«¥¢®£® ¡ ©â 
  45. ;-----------------------------------------------------
  46. proc _lstrlen lpStr:DWORD
  47.         mov     eax, [lpStr]
  48. @@:     inc     eax
  49.         cmp     byte [eax], 0
  50.         jne     @b
  51.         sub     eax, [lpStr]
  52.         ret
  53. endp
  54. ;-----------------------------------------------------
  55. ; ”ã­ªæ¨ï ¡ëáâண® á«¨ï­¨ï ¤¢ãå áâப
  56. ; ¨á¯®«ì§ãîâáï ä㭪樨 _lstrlen, _lstrcpy
  57. ;-----------------------------------------------------
  58. ; lpDst - 㪠§ â¥«ì ­  ¨á室­ãî áâபã ASCIIZ
  59. ; lpSrc - 㪠§ â¥«ì ­  ¤®¡ ¢«ï¥¬ãî áâபã ASCIIZ
  60. ;-----------------------------------------------------
  61. proc    _lstrcat lpDst:DWORD, lpSrc:DWORD
  62.         pusha
  63.  
  64.         stdcall _lstrlen,[lpDst]
  65.         add     eax,[lpDst]
  66.  
  67.         stdcall _lstrcpy,eax,[lpSrc]
  68.  
  69.         popa
  70.         ret
  71. endp
  72.  
  73. ;-----------------------------------------------------
  74. ; ”ã­ªæ¨ï ¡ëáâண® ª®¯¨à®¢ ­¨ï áâப¨
  75. ; ¨á¯®«ì§ãîâáï ä㭪樨 _lstrlen, _memcopy
  76. ;-----------------------------------------------------
  77. ; lpDst - 㪠§ â¥«ì ­  ¯à¨¥¬­¨ª
  78. ; lpSrc - 㪠§ â¥«ì ­  áâபã ASCIIZ
  79. ;-----------------------------------------------------
  80. proc    _lstrcpy lpDst:DWORD, lpSrc:DWORD
  81.         pusha
  82.  
  83.         stdcall _lstrlen,[lpSrc]
  84.         inc     eax
  85.         stdcall _memcopy,[lpDst],[lpSrc],eax
  86.  
  87.         popa
  88.         ret
  89. endp
  90.  
  91. ;-----------------------------------------------------
  92. ; ”ã­ªæ¨ï ¡ëáâண® ª®¯¨à®¢ ­¨ï ãç á⪠ ¯ ¬ïâ¨
  93. ;-----------------------------------------------------
  94. ; lpDst - 㪠§ â¥«ì ­  ¯à¨¥¬­¨ª
  95. ; lpSrc - 㪠§ â¥«ì ­  ¨áâ®ç­¨ª
  96. ; dSize - à §¬¥à ª®¯¨à㥬®£® ¡«®ª 
  97. ;-----------------------------------------------------
  98. proc    _memcopy lpDst:DWORD, lpSrc:DWORD, dSize:DWORD
  99.         pusha
  100.  
  101.         ; “áâ ­®¢¨âì 㪠§ â¥«¨ ­  ¨áâ®ç­¨ª ¨ ¯à¨¥¬­¨ª
  102.         cld
  103.         mov     edi,[lpDst]
  104.         mov     esi,[lpSrc]
  105.  
  106.         mov     ecx,[dSize]
  107.         push    ecx
  108.         ;  §¤¥«¨âì ­  4 ¨ ¯®«ãç¨âì ¤«¨­ã ¢ DWORD
  109.         shr     ecx,2
  110.         ; ‘ª®¯¨à®¢ âì ®á­®¢­ãî ç áâì áâப¨ DWORD' ¬¨
  111.         rep     movsd
  112.         pop     ecx
  113.         ; ®«ãç¨âì ®áâ â®ª ®â ¤¥«¥­¨ï ­  4
  114.         and     ecx,3
  115.         ; ‘ª®¯¨à®¢ âì ®áâ â®ª áâப¨ ¡ ©â ¬¨
  116.         rep     movsb
  117.  
  118.         popa
  119.         ret
  120. endp
  121.