Apps: fixed 3 programs for using a long path in parameters
[kolibrios.git] / programs / export.inc
blobd445a05315186315bc8a27e6712b9737f7f8d9ac
1 \r
2 ; Macroinstruction for making export section\r
3 \r
4 macro export dllname,[label,string]\r
5  { common\r
6     local module,addresses,names,ordinal,count\r
7     count = 0\r
8    forward\r
9     count = count+1\r
10    common\r
11     dd 0,0,0,RVA module,1\r
12     dd count,count,RVA addresses,RVA names,RVA ordinal\r
13     addresses:\r
14    forward\r
15     dd RVA label\r
16    common\r
17     names:\r
18    forward\r
19     local name\r
20     dd RVA name\r
21    common\r
22     ordinal: count = 0\r
23    forward\r
24     dw count\r
25     count = count+1\r
26    common\r
27     module db dllname,0\r
28    forward\r
29     name db string,0\r
30    common\r
31     local x,y,z,str1,str2,v1,v2\r
32     x = count shr 1\r
33     while x > 0\r
34      y = x\r
35      while y < count\r
36       z = y\r
37       while z-x >= 0\r
38        load v1 dword from names+z*4\r
39        str1=($-RVA $)+v1\r
40        load v2 dword from names+(z-x)*4\r
41        str2=($-RVA $)+v2\r
42        while v1 > 0\r
43         load v1 from str1+%-1\r
44         load v2 from str2+%-1\r
45         if v1 <> v2\r
46          break\r
47         end if\r
48        end while\r
49        if v1<v2\r
50         load v1 dword from names+z*4\r
51         load v2 dword from names+(z-x)*4\r
52         store dword v1 at names+(z-x)*4\r
53         store dword v2 at names+z*4\r
54         load v1 word from ordinal+z*2\r
55         load v2 word from ordinal+(z-x)*2\r
56         store word v1 at ordinal+(z-x)*2\r
57         store word v2 at ordinal+z*2\r
58        else\r
59         break\r
60        end if\r
61        z = z-x\r
62       end while\r
63       y = y+1\r
64      end while\r
65      x = x shr 1\r
66     end while }\r