Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1.  
  2. ; Macroinstructions for making import section
  3.  
  4. macro library [name,string]
  5.  { common
  6.     import.data:
  7.    forward
  8.     local _label
  9.     if defined name#.redundant
  10.      if ~ name#.redundant
  11.       dd RVA name#.lookup,0,0,RVA _label,RVA name#.address
  12.      end if
  13.     end if
  14.     name#.referred = 1
  15.    common
  16.     dd 0,0,0,0,0
  17.    forward
  18.     if defined name#.redundant
  19.      if ~ name#.redundant
  20.       _label db string,0
  21.              rb RVA $ and 1
  22.      end if
  23.     end if }
  24.  
  25. macro import name,[label,string]
  26.  { common
  27.     rb (- rva $) and 3
  28.     if defined name#.referred
  29.      name#.lookup:
  30.    forward
  31.      if used label
  32.       if string eqtype ''
  33.        local _label
  34.        dd RVA _label
  35.       else
  36.        dd 80000000h + string
  37.       end if
  38.      end if
  39.    common
  40.      if $ > name#.lookup
  41.       name#.redundant = 0
  42.       dd 0
  43.      else
  44.       name#.redundant = 1
  45.      end if
  46.      name#.address:
  47.    forward
  48.      if used label
  49.       if string eqtype ''
  50.        label dd RVA _label
  51.       else
  52.        label dd 80000000h + string
  53.       end if
  54.      end if
  55.    common
  56.      if ~ name#.redundant
  57.       dd 0
  58.      end if
  59.    forward
  60.      if used label & string eqtype ''
  61.      _label dw 0
  62.             db string,0
  63.             rb RVA $ and 1
  64.      end if
  65.    common
  66.     end if }
  67.  
  68. macro api [name] {}
  69.