Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. :int load_dll3(dword dllname, import_table)
  2. {
  3.         EAX = 68;
  4.         EBX = 19;
  5.         ECX = dllname;
  6.         $int     0x40
  7.         IF(EAX==0) GOTO exit3;
  8.  
  9.         EDX = EAX;
  10.         ESI = import_table;
  11.  
  12. @import_loop3:
  13.         $lodsd
  14.         IF(EAX==0) GOTO import_done3;
  15.         $push    edx
  16. @import_find3:
  17.         EBX = DSDWORD[EDX];
  18.         IF(EBX==0) GOTO exit3;
  19.         $push    eax
  20. @next3:
  21.         CL = DSBYTE[EAX];
  22.         $cmp     CL,DSBYTE[EBX];
  23.         $jnz     import_find_next3
  24.         IF (CL==0) GOTO import_found3;
  25.         EAX++;
  26.         EBX++;
  27.         goto     next3;
  28. @import_find_next3:
  29.         $pop     eax
  30.         EDX = EDX + 8;
  31.         goto     import_find3;
  32. @import_found3:
  33.         $pop     ebx
  34.         EAX = DSDWORD[EDX+4];
  35.         DSDWORD[ESI-4] = EAX;
  36.         $pop     edx
  37.  
  38.         goto     import_loop3;
  39. @import_done3:
  40.         return 0;
  41. @exit3:
  42.         return -1;
  43. }
  44.