home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 5_2007-2008.ISO / data / Zips / FileSystem206395542007.psc / CAsmProc.cls < prev    next >
Text File  |  2007-04-27  |  8KB  |  170 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "CAsmProc"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = False
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Option Explicit
  15. '
  16. '   O    O    O                                 »/ /»/ /»/ »/
  17. '    \__/ \__/                                /»  / / / /  /
  18. '    /_||_||_\         /|»»»»»»»»»»»»»»»»»»»» »   »   »    |
  19. '   // ||_||          | | ::..         Demo           ..:: |
  20. '   \\_/\ #\ __       | |+--------------------------------+|
  21. '   /_(  \  )__}      | |       Coded by EBArtSoft@        |
  22. '  //  \O_\/          | |        Copyright ⌐ 2007          |
  23. '  \\__||_||___       | |    http://www.ebartcodes.info    |
  24. '   \__||_||__/        \|__________________________________|
  25. '   ===========
  26. '  ==== E.B ====  --------------------------------------------------------'
  27. '                      <<< ALL RIGHTS RESERVED >>>                        '
  28. ' ------------------------------------------------------------------------'
  29. ' Permission  to  use,  copy,  modify,  and  distribute this software for '
  30. ' any  purpose and  without  fee  is  hereby  granted,  provided that the '
  31. ' above copyright notice appear in all copies and that both the copyright '
  32. ' notice  and  this permission notice appear in supporting documentation. '
  33. ' ------------------------------------------------------------------------'
  34. ' THE  MATERIAL  EMBODIED  ON  THIS  SOFTWARE IS  PROVIDED TO YOU "AS-IS" '
  35. ' AND  WITHOUT  WARRANTY  OF  ANY  KIND,  EXPRESS,  IMPLIED OR OTHERWISE, '
  36. ' INCLUDING  WITHOUT  LIMITATION,  ANY  WARRANTY  OF   MERCHANTABILITY OR '
  37. ' FITNESS  FOR  A  PARTICULAR  PURPOSE.  IN  NO EVENT  SHALL WE BE LIABLE '
  38. ' TO  YOU  OR  ANYONE ELSE FOR  ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT '
  39. ' OR  CONSEQUENTIAL  DAMAGES  OF  ANY  KIND,  OR ANY  DAMAGES WHATSOEVER, '
  40. ' INCLUDING  WITHOUT  LIMITATION,  LOSS  OF PROFIT, LOSS  OF USE, SAVINGS '
  41. ' OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR  NOT WE HAS BEEN '
  42. ' ADVISED  OF  THE  POSSIBILITY  OF  SUCH  LOSS,  HOWEVER  CAUSED AND  ON '
  43. ' ANY  THEORY  OF  LIABILITY,  ARISING  OUT OF OR IN CONNECTION  WITH THE '
  44. ' POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.                        '
  45. ' ------------------------------------------------------------------------'
  46.  
  47. '========================================================================
  48. ' Start
  49. '========================================================================
  50. Private Declare Sub MemoryCopy Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  51.  
  52. Private mCode()  As Byte
  53. Private mProc()  As Long
  54. Private mPtr     As Long
  55. Private mSize    As Long
  56. Private mCount   As Long
  57.  
  58. '===================================================================
  59. ' START OF ASM FUNCTIONS
  60. '===================================================================
  61.  
  62. Private Sub Class_Initialize()
  63.     
  64.     '-----------------------------------
  65.     ' bnAlloc2MoAlea
  66.     '-----------------------------------
  67.     AsmBegin
  68.     Asm &H8B, &H44, &H24, &H8       '    mov         eax,dword ptr [esp+8]
  69.     Asm &H85, &HC0                  '    test        eax,eax
  70.     Asm &H74, &H7C                  '    je          0040108B
  71.     Asm &H57                        '    push        edi
  72.     Asm &H50                         '    push        eax
  73.     Asm &H53                        '    push        ebx
  74.     Asm &H8B, &HF8                  '    mov         edi,eax
  75.     Asm &HBB, &H0, &H0, &H2, &H0    '    mov         ebx,20000h
  76.     Asm &HF, &H31                   '    rdtsc
  77.     Asm &H8B, &HD0                  '    mov         edx,eax
  78.     Asm &HB9, &HFD, &H43, &H3, &H0  '    mov         ecx,343FDh
  79.     Asm &H83, &HEF, &H4             '    sub         edi,4
  80.     Asm &H8B, &HC2                  '    mov         eax,edx
  81.     Asm &HF7, &HE1                  '    mul         eax,ecx
  82.     Asm &H5, &HC3, &H9E, &H26, &H0  '    add         eax,269EC3h
  83.     Asm &H83, &HC7, &H4             '    add         edi,4
  84.     Asm &H8B, &HD0                  '    mov         edx,eax
  85.     Asm &HC1, &HC8, &H10            '    ror         eax,10h
  86.     Asm &H5, &HDF, &HC3, &H79, &H0  '    add         eax,79C3DFh
  87.     Asm &H89, &H7                   '    mov         dword ptr [edi],eax
  88.     Asm &H8B, &HC2                  '    mov         eax,edx
  89.     Asm &HF7, &HE1                  '    mul         eax,ecx
  90.     Asm &H5, &HC3, &H9E, &H26, &H0  '    add         eax,269EC3h
  91.     Asm &H83, &HC7, &H4             '    add         edi,4
  92.     Asm &H8B, &HD0                  '    mov         edx,eax
  93.     Asm &HC1, &HC8, &H10            '    ror         eax,10h
  94.     Asm &H5, &HDF, &HC3, &H79, &H0  '    add         eax,79C3DFh
  95.     Asm &H89, &H7                   '    mov         dword ptr [edi],eax
  96.     Asm &H8B, &HC2                  '    mov         eax,edx
  97.     Asm &HF7, &HE1                  '    mul         eax,ecx
  98.     Asm &H5, &HC3, &H9E, &H26, &H0  '    add         eax,269EC3h
  99.     Asm &H83, &HC7, &H4             '    add         edi,4
  100.     Asm &H8B, &HD0                  '    mov         edx,eax
  101.     Asm &HC1, &HC8, &H10            '    ror         eax,10h
  102.     Asm &H5, &HDF, &HC3, &H79, &H0  '    add         eax,79C3DFh
  103.     Asm &H89, &H7                   '    mov         dword ptr [edi],eax
  104.     Asm &H8B, &HC2                  '    mov         eax,edx
  105.     Asm &HF7, &HE1                  '    mul         eax,ecx
  106.     Asm &H5, &HC3, &H9E, &H26, &H0  '    add         eax,269EC3h
  107.     Asm &H83, &HC7, &H4             '    add         edi,4
  108.     Asm &H8B, &HD0                  '    mov         edx,eax
  109.     Asm &HC1, &HC8, &H10            '    ror         eax,10h
  110.     Asm &H5, &HDF, &HC3, &H79, &H0  '    add         eax,79C3DFh
  111.     Asm &H4B                        '    dec         ebx
  112.     Asm &H89, &H7                   '    mov         dword ptr [edi],eax
  113.     Asm &H75, &H9D                  '    jne         00401025
  114.     Asm &H5B                        '    pop         ebx
  115.     Asm &H58                        '    pop         eax
  116.     Asm &H5F                        '    pop         edi
  117.     Asm &HC2, &H4, &H0              '    ret         4
  118.     AsmEnd
  119.         
  120.     If (mCount = 0) Then Exit Sub
  121.     
  122.     Dim adr() As Long
  123.     Dim ptr   As Long
  124.     
  125.     ReDim adr(mCount - 1)
  126.     
  127.     For ptr = 0 To UBound(mProc)
  128.         adr(ptr) = VarPtr(mCode(mProc(ptr)))
  129.     Next
  130.     
  131.     MemoryCopy ptr, ByVal ObjPtr(Me), 4
  132.     MemoryCopy ByVal (ptr + 28), adr(0), 4 * mCount
  133.     
  134. End Sub
  135.  
  136. '===================================================================
  137. ' START OF ASM MANAGER
  138. '===================================================================
  139.  
  140. Private Sub AsmBegin()
  141.     If mCount Then ReDim Preserve mProc(mCount) Else ReDim mProc(0)
  142.     mProc(mCount) = mPtr
  143.     mCount = mCount + 1
  144. End Sub
  145.  
  146. Private Sub AsmEnd()
  147.     Dim i As Long
  148.     For i = 1 To (4 - (mPtr Mod 4))
  149.         Asm &HCC
  150.     Next
  151. End Sub
  152.  
  153. Private Sub Asm(ParamArray b() As Variant)
  154.     Dim i As Long
  155.     For i = 0 To UBound(b)
  156.         If ((mPtr + i) >= mSize) Then
  157.             If mSize Then ReDim Preserve mCode(mSize + 31) Else ReDim mCode(31)
  158.             mSize = mSize + 32
  159.         End If
  160.         mCode(mPtr) = b(i)
  161.         mPtr = mPtr + 1
  162.     Next
  163. End Sub
  164.  
  165. '===================================================================
  166. ' START OF EXPORTED FUNCTIONS
  167. '===================================================================
  168.  
  169. Public Sub bnAlloc2MoAlea(ByRef Table As Byte): End Sub
  170.