Subversion Repositories Kolibri OS

Rev

Rev 4290 | Go to most recent revision | 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.         push    edi ecx
  48.  
  49.         cld
  50.         mov     edi,[lpStr]
  51.         xor     ecx,ecx
  52.         dec     ecx
  53.         xor     eax,eax
  54.         repne   scasb
  55.         not     ecx
  56.         dec     ecx
  57.         mov     eax,ecx
  58.  
  59.         pop     ecx edi
  60.         ret
  61. endp
  62.  
  63. ;-----------------------------------------------------
  64. ; ”ã­ªæ¨ï ¡ëáâண® á«¨ï­¨ï ¤¢ãå áâப
  65. ; ¨á¯®«ì§ãîâáï ä㭪樨 _lstrlen, _lstrcpy
  66. ;-----------------------------------------------------
  67. ; lpDst - 㪠§ â¥«ì ­  ¨á室­ãî áâபã ASCIIZ
  68. ; lpSrc - 㪠§ â¥«ì ­  ¤®¡ ¢«ï¥¬ãî áâபã ASCIIZ
  69. ;-----------------------------------------------------
  70. proc    _lstrcat lpDst:DWORD, lpSrc:DWORD
  71.         pusha
  72.  
  73.         stdcall _lstrlen,[lpDst]
  74.         add     eax,[lpDst]
  75.  
  76.         stdcall _lstrcpy,eax,[lpSrc]
  77.  
  78.         popa
  79.         ret
  80. endp
  81.  
  82. ;-----------------------------------------------------
  83. ; ”ã­ªæ¨ï ¡ëáâண® ª®¯¨à®¢ ­¨ï áâப¨
  84. ; ¨á¯®«ì§ãîâáï ä㭪樨 _lstrlen, _memcopy
  85. ;-----------------------------------------------------
  86. ; lpDst - 㪠§ â¥«ì ­  ¯à¨¥¬­¨ª
  87. ; lpSrc - 㪠§ â¥«ì ­  áâபã ASCIIZ
  88. ;-----------------------------------------------------
  89. proc    _lstrcpy lpDst:DWORD, lpSrc:DWORD
  90.         pusha
  91.  
  92.         stdcall _lstrlen,[lpSrc]
  93.         inc     eax
  94.         stdcall _memcopy,[lpDst],[lpSrc],eax
  95.  
  96.         popa
  97.         ret
  98. endp
  99.  
  100. ;-----------------------------------------------------
  101. ; ”ã­ªæ¨ï ¡ëáâண® ª®¯¨à®¢ ­¨ï ãç á⪠ ¯ ¬ïâ¨
  102. ;-----------------------------------------------------
  103. ; lpDst - 㪠§ â¥«ì ­  ¯à¨¥¬­¨ª
  104. ; lpSrc - 㪠§ â¥«ì ­  ¨áâ®ç­¨ª
  105. ; dSize - à §¬¥à ª®¯¨à㥬®£® ¡«®ª 
  106. ;-----------------------------------------------------
  107. proc    _memcopy lpDst:DWORD, lpSrc:DWORD, dSize:DWORD
  108.         pusha
  109.  
  110.         ; “áâ ­®¢¨âì 㪠§ â¥«¨ ­  ¨áâ®ç­¨ª ¨ ¯à¨¥¬­¨ª
  111.         cld
  112.         mov     edi,[lpDst]
  113.         mov     esi,[lpSrc]
  114.  
  115.         mov     ecx,[dSize]
  116.         push    ecx
  117.         ;  §¤¥«¨âì ­  4 ¨ ¯®«ãç¨âì ¤«¨­ã ¢ DWORD
  118.         shr     ecx,2
  119.         ; ‘ª®¯¨à®¢ âì ®á­®¢­ãî ç áâì áâப¨ DWORD' ¬¨
  120.         rep     movsd
  121.         pop     ecx
  122.         ; ®«ãç¨âì ®áâ â®ª ®â ¤¥«¥­¨ï ­  4
  123.         and     ecx,3
  124.         ; ‘ª®¯¨à®¢ âì ®áâ â®ª áâப¨ ¡ ©â ¬¨
  125.         rep     movsb
  126.  
  127.         popa
  128.         ret
  129. endp
  130.