Subversion Repositories Kolibri OS

Rev

Rev 7209 | Rev 7693 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.         ╩юьяшы ЄюЁ  ч√ър яЁюуЁрььшЁютрэш  Oberon-07/16 фы  i486
  2.                 Windows/Linux/KolibriOS.
  3. ------------------------------------------------------------------------------
  4.  
  5.         ╧рЁрьхЄЁ√ ъюьрэфэющ ёЄЁюъш
  6.  
  7.   ┬їюф - ЄхъёЄют√х Їрщы√ ьюфєыхщ ё Ёрё°шЁхэшхь ".ob07", ъюфшЁютър ANSI шыш
  8. UTF-8 ё BOM-ёшуэрЄєЁющ.
  9.   ┬√їюф - шёяюэ хь√щ Їрщы ЇюЁьрЄр PE32, ELF шыш MENUET01/MSCOFF.
  10.   ╧рЁрьхЄЁ√:
  11.   1) шь  уыртэюую ьюфєы 
  12.   2) шь  Ёхчєы№ЄшЁє■∙хую Їрщыр
  13.   3) Єшя яЁшыюцхэш  ш яырЄЇюЁьр
  14.       "console" - Windows console
  15.       "gui" - Windows GUI
  16.       "dll" - Windows DLL
  17.       "kos" - KolibriOS
  18.       "obj" - KolibriOS DLL
  19.       "elfexe" - Linux ELF-EXEC
  20.   4) эхюс чрЄхы№э√х ярЁрьхЄЁ√-ъы■ўш
  21.       -stk <size> ЁрчьхЁ ёЄ¤ър т ьхурсрщЄрї (яю єьюыўрэш■ 2 ╠с)
  22.       -base <address> рфЁхё чруЁєчъш шёяюыэ хьюую Їрщыр т ъшыюсрщЄрї
  23.       -ver <major.minor> тхЁёш  яЁюуЁрьь√ (Єюы№ъю фы  obj)
  24.       -nochk <"ptibcwra"> юЄъы■ўшЄ№ яЁютхЁъш яЁш т√яюыэхэшш (ёь. эшцх)
  25.  
  26.       ярЁрьхЄЁ -nochk чрфрхЄё  т тшфх ёЄЁюъш шч ёшьтюыют:
  27.       "p" - єърчрЄхыш
  28.       "t" - Єшя√
  29.       "i" - шэфхъё√
  30.       "b" - эх тэюх яЁштхфхэшх INTEGER ъ BYTE
  31.       "c" - фшрярчюэ рЁуєьхэЄр ЇєэъЎшш CHR
  32.       "w" - фшрярчюэ рЁуєьхэЄр ЇєэъЎшш WCHR
  33.       "r" - ¤ътштрыхэЄэю "bcw"
  34.       "a" - тёх яЁютхЁъш
  35.  
  36.       ╧юЁ фюъ ёшьтюыют ьюцхЄ с√Є№ ы■с√ь. ═рышўшх т ёЄЁюъх Єюую шыш шэюую
  37.       ёшьтюыр юЄъы■ўрхЄ ёююЄтхЄёЄтє■∙є■ яЁютхЁъє.
  38.  
  39.       ═ряЁшьхЁ: -nochk it - юЄъы■ўшЄ№ яЁютхЁъє шэфхъёют ш юїЁрэє Єшяр.
  40.       -nochk a - юЄъы■ўшЄ№ тёх юЄъы■ўрхь√х яЁютхЁъш.
  41.  
  42.   ═ряЁшьхЁ:
  43.  
  44.   Compiler.exe "C:\example.ob07" "C:\example.exe" console -stk 1
  45.   Compiler.exe "C:\example.ob07" "C:\example.dll" dll
  46.   Compiler.exe "C:\example.ob07" "C:\example.exe" gui -stk 4
  47.   Compiler.exe "C:\example.ob07" "C:\example.exe" console -nochk pti
  48.   Compiler.kex "/tmp0/1/example.ob07" "/tmp0/1/example.kex" kos -stk 2
  49.   Compiler.kex "/tmp0/1/example.ob07" "/tmp0/1/example.obj" obj -ver 2.7
  50.   Compiler.exe "C:\example.ob07" "C:\example" elfexe
  51.  
  52.   ┬ ёыєўрх єёях°эющ ъюьяшы Ўшш, ъюьяшы ЄюЁ яхЁхфрхЄ ъюф чртхЁ°хэш  0, шэрўх 1.
  53. ╧Ёш ЁрсюЄх ъюьяшы ЄюЁр т KolibriOS, ъюф чртхЁ°хэш  эх яхЁхфрхЄё .
  54.  
  55. ------------------------------------------------------------------------------
  56.         ╬Єышўш  юЄ юЁшушэрыр
  57.  
  58. 1.      ╨рё°шЁхэ яёхтфюьюфєы№ SYSTEM
  59. 2.      ┬ шфхэЄшЇшърЄюЁрї фюяєёърхЄё  ёшьтюы "_"
  60. 3.      ─юсртыхэ√ ёшёЄхьэ√х Їыруш
  61. 4.      ╙ёютхЁ°хэёЄтютрэ юяхЁрЄюЁ CASE (фюсртыхэ√ ъюэёЄрэЄэ√х т√Ёрцхэш  т
  62.         ьхЄърї трЁшрэЄют ш эхюс чрЄхы№эр  тхЄър ELSE)
  63. 5.      ╨рё°шЁхэ эрсюЁ ёЄрэфрЁЄэ√ї яЁюЎхфєЁ
  64. 6.      ╤хьрэЄшър юїЁрэ√/яЁютхЁъш Єшяр єЄюўэхэр фы  эєыхтюую єърчрЄхы 
  65. 7.      ╤хьрэЄшър DIV ш MOD єЄюўэхэр фы  юЄЁшЎрЄхы№э√ї ўшёхы
  66. 8.      ─юсртыхэ√ юфэюёЄЁюўэ√х ъюььхэЄрЁшш (эрўшэр■Єё  ё ярЁ√ ёшьтюыют "//")
  67. 9.      ╨рчЁх°хэю эрёыхфютрэшх юЄ Єшяр-єърчрЄхы 
  68. 10.     ─юсртыхэ ёшэЄръёшё фы  шьяюЁЄр яЁюЎхфєЁ шч тэх°эшї сшсышюЄхъ
  69. 11.     "╤ЄЁюъш" ьюцэю чръы■ўрЄ№ Єръцх т юфшэюўэ√х ърт√ўъш: 'ёЄЁюър'
  70. 12.     ─юсртыхэ Єшя WCHAR
  71.  
  72. ------------------------------------------------------------------------------
  73.         ╬ёюсхээюёЄш ЁхрышчрЎшш
  74.  
  75. 1.      ╬ёэютэ√х Єшя√
  76.  
  77.           ╥шя              ─шрярчюэ чэрўхэшщ               ╨рчьхЁ, срщЄ
  78.  
  79.         INTEGER       -2147483648 .. 2147483647                 4
  80.         REAL          4.94E-324 .. 1.70E+308                    8
  81.         CHAR          ёшьтюы ASCII (0X .. 0FFX)                 1
  82.         BOOLEAN       FALSE, TRUE                               1
  83.         SET           ьэюцхёЄтю шч Ўхы√ї ўшёхы {0 .. 31}        4
  84.         BYTE          0 .. 255                                  1
  85.         WCHAR         ёшьтюы ■эшъюфр (0X .. 0FFFFX)             2
  86.  
  87. 2.      ╠ръёшьры№эр  фышэр шфхэЄшЇшърЄюЁют - 1024 ёшьтюыют
  88. 3.      ╠ръёшьры№эр  фышэр ёЄЁюъют√ї ъюэёЄрэЄ - 1024 ёшьтюыют (UTF-8)
  89. 4.      ╠ръёшьры№эр  ЁрчьхЁэюёЄ№ юЄъЁ√Є√ї ьрёёштют - 5
  90. 5.      ╧ЁюЎхфєЁр NEW чряюыэ хЄ эєы ьш т√фхыхээ√щ сыюъ ярь Єш
  91. 6.      ├ыюсры№э√х ш ыюъры№э√х яхЁхьхээ√х шэшЎшрышчшЁє■Єё  эєы ьш
  92. 7.      ┬ юЄышўшх юЄ ьэюушї Oberon-ЁхрышчрЎшщ, ёсюЁ∙шъ ьєёюЁр ш фшэрьшўхёър 
  93.         ьюфєы№эюёЄ№ юЄёєЄёЄтє■Є
  94. 8.      ╥шя BYTE т т√Ёрцхэш ї тёхуфр яЁштюфшЄё  ъ INTEGER
  95. 9.      ╩юэЄЁюы№ яхЁхяюыэхэш  чэрўхэшщ т√Ёрцхэшщ эх яЁюшчтюфшЄё 
  96. 10.     ╬°шсъш тЁхьхэш т√яюыэхэш :
  97.  
  98.         - ASSERT(x), яЁш x = FALSE
  99.         - Ёрч√ьхэютрэшх эєыхтюую єърчрЄхы 
  100.         - Ўхыюўшёыхээюх фхыхэшх эр 0
  101.         - т√чют яЁюЎхфєЁ√ ўхЁхч яЁюЎхфєЁэє■ яхЁхьхээє■ ё эєыхт√ь чэрўхэшхь
  102.         - ю°шсър юїЁрэ√ Єшяр
  103.         - эрЁє°хэшх уЁрэшЎ ьрёёштр
  104.         - эхяЁхфєёьюЄЁхээюх чэрўхэшх т√Ёрцхэш  т юяхЁрЄюЁх CASE
  105.         - ю°шсър ъюяшЁютрэш  ьрёёштют v := x, хёыш LEN(v) < LEN(x)
  106.         - эх тэюх яЁштхфхэшх x:INTEGER ъ v:BYTE, хёыш (x < 0) OR (x > 255)
  107.         - CHR(x), хёыш (x < 0) OR (x > 255)
  108.         - WCHR(x), хёыш (x < 0) OR (x > 65535)
  109.  
  110. ------------------------------------------------------------------------------
  111.         ╧ёхтфюьюфєы№ SYSTEM
  112.  
  113.   ╧ёхтфюьюфєы№ SYSTEM ёюфхЁцшЄ эшчъюєЁютэхт√х ш эхсхчюярёэ√х яЁюЎхфєЁ√,
  114. ю°шсъш яЁш шёяюы№чютрэшш яЁюЎхфєЁ яёхтфюьюфєы  SYSTEM ьюуєЄ яЁштхёЄш ъ
  115. яютЁхцфхэш■ фрээ√ї тЁхьхэш т√яюыэхэш  ш ртрЁшщэюьє чртхЁ°хэш■ яЁюуЁрьь√.
  116.  
  117.         PROCEDURE ADR(v: ы■сющ Єшя): INTEGER
  118.                 v - яхЁхьхээр  шыш яЁюЎхфєЁр;
  119.                 тючтЁр∙рхЄ рфЁхё v
  120.  
  121.         PROCEDURE SADR(x: ёЄЁюъютр  ъюэёЄрэЄр (CHAR UTF-8)): INTEGER
  122.                 тючтЁр∙рхЄ рфЁхё x
  123.  
  124.         PROCEDURE WSADR(x: ёЄЁюъютр  ъюэёЄрэЄр (WCHAR)): INTEGER
  125.                 тючтЁр∙рхЄ рфЁхё x
  126.  
  127.         PROCEDURE SIZE(T): INTEGER
  128.                 тючтЁр∙рхЄ ЁрчьхЁ Єшяр T
  129.  
  130.         PROCEDURE TYPEID(T): INTEGER
  131.                 T - Єшя-чряшё№ шыш Єшя-єърчрЄхы№,
  132.                 тючтЁр∙рхЄ эюьхЁ Єшяр т ЄрсышЎх Єшяют-чряшёхщ
  133.  
  134.         PROCEDURE INF(): REAL
  135.                 тючтЁр∙рхЄ ёяхЎшры№эюх тх∙хёЄтхээюх чэрўхэшх "схёъюэхўэюёЄ№"
  136.  
  137.         PROCEDURE GET(a: INTEGER;
  138.                 VAR v: ы■сющ юёэютэющ Єшя, PROCEDURE, POINTER)
  139.                 v := ╧рь Є№[a]
  140.  
  141.         PROCEDURE PUT(a: INTEGER; x: ы■сющ юёэютэющ Єшя, PROCEDURE, POINTER)
  142.                 ╧рь Є№[a] := x;
  143.                 ┼ёыш x: BYTE шыш x: WCHAR, Єю чэрўхэшх x сєфхЄ Ёрё°шЁхэю
  144.                 фю 32 сшЄ, фы  чряшёш срщЄют шёяюы№чютрЄ№ SYSTEM.PUT8,
  145.                 фы  WCHAR -- SYSTEM.PUT16
  146.  
  147.         PROCEDURE PUT8(a: INTEGER; x: INTEGER, BYTE, CHAR, WCHAR)
  148.                 ╧рь Є№[a] := ьырф°шх 8 сшЄ (x)
  149.  
  150.         PROCEDURE PUT16(a: INTEGER; x: INTEGER, BYTE, CHAR, WCHAR)
  151.                 ╧рь Є№[a] := ьырф°шх 16 сшЄ (x)
  152.  
  153.         PROCEDURE MOVE(Source, Dest, n: INTEGER)
  154.                 ╩юяшЁєхЄ n срщЄ ярь Єш шч Source т Dest,
  155.                 юсырёЄш Source ш Dest эх ьюуєЄ яхЁхъЁ√трЄ№ё 
  156.  
  157.         PROCEDURE COPY(VAR Source: ы■сющ Єшя; VAR Dest: ы■сющ Єшя; n: INTEGER)
  158.                 ╩юяшЁєхЄ n срщЄ ярь Єш шч Source т Dest.
  159.                 ▌ътштрыхэЄэю
  160.                 SYSTEM.MOVE(SYSTEM.ADR(Source), SYSTEM.ADR(Dest), n)
  161.  
  162.         PROCEDURE CODE(byte1, byte2,... : INTEGER)
  163.                 ┬ёЄртър ьр°шээюую ъюфр,
  164.                 byte1, byte2 ... - ъюэёЄрэЄ√ т фшрярчюэх 0..255,
  165.                 эряЁшьхЁ:
  166.                 SYSTEM.CODE(08BH, 045H, 008H) (* mov eax, dword [ebp + 08h] *)
  167.  
  168.   ╥ръцх т ьюфєых SYSTEM юяЁхфхыхэ Єшя CARD16 (2 срщЄр). ─ы  Єшяр CARD16 эх
  169. фюяєёър■Єё  эшъръшх  тэ√х юяхЁрЎшш, чр шёъы■ўхэшхь яЁшётрштрэш .
  170. ╧ЁхюсЁрчютрэш  CARD16 -> INTEGER ш INTEGER -> CARD16 ьюуєЄ с√Є№ Ёхрышчютрэ√
  171. Єръ:
  172.  
  173.         PROCEDURE Card16ToInt (w: SYSTEM.CARD16): INTEGER;
  174.         VAR i: INTEGER;
  175.         BEGIN
  176.             SYSTEM.PUT(SYSTEM.ADR(i), w)
  177.             RETURN i
  178.         END Card16ToInt;
  179.  
  180.         PROCEDURE IntToCard16 (i: INTEGER): SYSTEM.CARD16;
  181.         VAR w: SYSTEM.CARD16;
  182.         BEGIN
  183.             SYSTEM.GET(SYSTEM.ADR(i), w)
  184.             RETURN w
  185.         END IntToCard16;
  186.  
  187.   ╘єэъЎшш яёхтфюьюфєы  SYSTEM эхы№ч  шёяюы№чютрЄ№ т ъюэёЄрэЄэ√ї т√Ёрцхэш ї.
  188.  
  189. ------------------------------------------------------------------------------
  190.         ╤шёЄхьэ√х Їыруш
  191.  
  192.   ╧Ёш юс· тыхэшш яЁюЎхфєЁэ√ї Єшяют ш уыюсры№э√ї яЁюЎхфєЁ, яюёых ъы■ўхтюую
  193. ёыютр PROCEDURE ьюцхЄ с√Є№ єърчрэ Їыру ёюуыр°хэш  ю т√чютх: [stdcall],
  194. [ccall], [ccall16], [windows], [linux]. ═ряЁшьхЁ:
  195.  
  196.         PROCEDURE [ccall] MyProc (x, y, z: INTEGER): INTEGER;
  197.  
  198.   ┼ёыш єърчрэ Їыру [ccall16], Єю яЁшэшьрхЄё  ёюуыр°хэшх ccall, эю яхЁхф
  199. т√чютюь єърчрЄхы№ ёЄ¤ър сєфхЄ т√Ёртэхэ яю уЁрэшЎх 16 срщЄ.
  200.   ╘ыру [windows] - ёшэюэшь фы  [stdcall], [linux] - ёшэюэшь фы  [ccall16].
  201.   ╟эръ "-" яюёых шьхэш Їырур ([stdcall-], [linux-], ...) ючэрўрхЄ, ўЄю
  202. Ёхчєы№ЄрЄ яЁюЎхфєЁ√ ьюцэю шуэюЁшЁютрЄ№ (эх фюяєёърхЄё  фы  Єшяр REAL).
  203.  
  204.   ╧Ёш юс· тыхэшш Єшяют-чряшёхщ, яюёых ъы■ўхтюую ёыютр RECORD ьюцхЄ с√Є№
  205. єърчрэ Їыру [noalign]. ╘ыру [noalign] ючэрўрхЄ юЄёєЄёЄтшх т√Ёртэштрэш  яюыхщ
  206. чряшёш. ╟ряшёш ё ёшёЄхьэ√ь Їыруюь эх ьюуєЄ шьхЄ№ срчют√щ Єшя ш эх ьюуєЄ с√Є№
  207. срчют√ьш Єшярьш фы  фЁєушї чряшёхщ.
  208.   ─ы  шёяюы№чютрэш  ёшёЄхьэ√ї Їыруют, ЄЁхсєхЄё  шьяюЁЄшЁютрЄ№ SYSTEM.
  209.  
  210. ------------------------------------------------------------------------------
  211.         ╬яхЁрЄюЁ CASE
  212.  
  213.   ╤шэЄръёшё юяхЁрЄюЁр CASE:
  214.  
  215.         CaseStatement =
  216.                 CASE Expression OF ╤ase {"|" ╤ase}
  217.                         [ELSE StatementSequence] END.
  218.         Case = [CaseLabelList ":" StatementSequence].
  219.         CaseLabelList = CaseLabels {"," CaseLabels}.
  220.         CaseLabels = ConstExpression [".." ConstExpression].
  221.  
  222.   ═ряЁшьхЁ:
  223.  
  224.         CASE x OF
  225.         |-1:    DoSomething1
  226.         | 1:    DoSomething2
  227.         | 0:    DoSomething3
  228.         ELSE
  229.                 DoSomething4
  230.         END
  231.  
  232.   ┬ ьхЄърї трЁшрэЄют ьюцэю шёяюы№чютрЄ№ ъюэёЄрэЄэ√х т√Ёрцхэш , тхЄър ELSE
  233. эхюс чрЄхы№эр. ┼ёыш чэрўхэшх x эх ёююЄтхЄёЄтєхЄ эш юфэюьє трЁшрэЄє ш ELSE
  234. юЄёєЄёЄтєхЄ, Єю яЁюуЁрььр яЁхЁ√трхЄё  ё ю°шсъющ тЁхьхэш т√яюыэхэш .
  235.  
  236. ------------------------------------------------------------------------------
  237.         ╥шя WCHAR
  238.  
  239.   ╥шя WCHAR фюсртыхэ т  ч√ъ фы  єфюсэющ яюффхцъш ■эшъюфр. ─ы  Єшяют WCHAR ш
  240. ARRAY OF WCHAR фюяєёър■Єё  тёх Єх цх юяхЁрЎшш, ъръ фы  Єшяют CHAR ш
  241. ARRAY OF CHAR, чр шёъы■ўхэшхь тёЄЁюхээющ яЁюЎхфєЁ√ CHR, ъюЄюЁр  тючтЁр∙рхЄ
  242. Єюы№ъю Єшя CHAR. ─ы  яюыєўхэш  чэрўхэш  Єшяр WCHAR, ёыхфєхЄ шёяюы№чютрЄ№
  243. яЁюЎхфєЁє WCHR тьхёЄю CHR. ─ы  яЁртшы№эющ ЁрсюЄ√ ё Єшяюь, эхюсїюфшью ёюїЁрэ Є№
  244. шёїюфэ√щ ъюф т ъюфшЁютъх UTF-8 c BOM.
  245.  
  246. ------------------------------------------------------------------------------
  247.         ╧ЁютхЁър ш юїЁрэр Єшяр эєыхтюую єърчрЄхы 
  248.  
  249.   ╬Ёшушэры№эюх ёююс∙хэшх ю  ч√ъх эх юяЁхфхы хЄ яютхфхэшх яЁюуЁрьь√ яЁш
  250. т√яюыэхэшш юїЁрэ√ p(T) ш яЁютхЁъш Єшяр p IS T яЁш p = NIL. ┬ю ьэюушї
  251. Oberon-ЁхрышчрЎш ї т√яюыэхэшх Єръющ юяхЁрЎшш яЁштюфшЄ ъ ю°шсъх тЁхьхэш
  252. т√яюыэхэш . ┬ фрээющ ЁхрышчрЎшш юїЁрэр Єшяр эєыхтюую єърчрЄхы  эх яЁштюфшЄ ъ
  253. ю°шсъх, р яЁютхЁър Єшяр фрхЄ Ёхчєы№ЄрЄ FALSE. ┬ Ё фх ёыєўрхт ¤Єю яючтюы хЄ
  254. чэрўшЄхы№эю ёюъЁрЄшЄ№ ўрёЄюЄє яЁшьхэхэш  юїЁрэ√ Єшяр.
  255.  
  256. ------------------------------------------------------------------------------
  257.         ─юяюыэшЄхы№э√х ёЄрэфрЁЄэ√х яЁюЎхфєЁ√
  258.  
  259.         DISPOSE (VAR v: ы■сющ_єърчрЄхы№)
  260.                 ╬ётюсюцфрхЄ ярь Є№, т√фхыхээє■ яЁюЎхфєЁющ NEW фы 
  261.                 фшэрьшўхёъющ яхЁхьхээющ v^, ш яЁшётрштрхЄ яхЁхьхээющ v
  262.                 чэрўхэшх NIL.
  263.  
  264.         COPY (x: ARRAY OF CHAR/WCHAR; VAR v: ARRAY OF CHAR/WCHAR);
  265.                 v := x;
  266.                 ┼ёыш LEN(v) < LEN(x), Єю ёЄЁюър x сєфхЄ ёъюяшЁютрэр
  267.                 эх яюыэюёЄ№■
  268.  
  269.         LSR (x, n: INTEGER): INTEGER
  270.                 ╦юушўхёъшщ ёфтшу x эр n сшЄ тяЁртю.
  271.  
  272.         MIN (a, b: INTEGER): INTEGER
  273.                 ╠шэшьєь шч фтєї чэрўхэшщ.
  274.  
  275.         MAX (a, b: INTEGER): INTEGER
  276.                 ╠ръёшьєь шч фтєї чэрўхэшщ.
  277.  
  278.         BITS (x: INTEGER): SET
  279.                 ╚эЄхЁяЁхЄшЁєхЄ x ъръ чэрўхэшх Єшяр SET.
  280.                 ┬√яюыэ хЄё  эр ¤Єрях ъюьяшы Ўшш.
  281.  
  282.         LENGTH (s: ARRAY OF CHAR/WCHAR): INTEGER
  283.                 ─ышэр 0X-чртхЁ°хээющ ёЄЁюъш s, схч єўхЄр ёшьтюыр 0X.
  284.                 ┼ёыш ёшьтюы 0X юЄёєЄёЄтєхЄ, ЇєэъЎш  тючтЁр∙рхЄ фышэє
  285.                 ьрёёштр s. s эх ьюцхЄ с√Є№ ъюэёЄрэЄющ.
  286.  
  287.         WCHR (n: INTEGER): WCHAR
  288.                 ╧ЁхюсЁрчютрэшх Єшяр, рэрыюушўэю CHR(n: INTEGER): CHAR
  289.  
  290. ------------------------------------------------------------------------------
  291.         DIV ш MOD
  292.  
  293.          x         y      x DIV y   x MOD y
  294.  
  295.          5         3         1         2
  296.         -5         3        -2         1
  297.          5        -3        -2        -1
  298.         -5        -3         1        -2
  299.  
  300. ------------------------------------------------------------------------------
  301.         ╚ьяюЁЄшЁютрээ√х яЁюЎхфєЁ√
  302.  
  303.   ╤шэЄръёшё шьяюЁЄр:
  304.  
  305.   PROCEDURE [callconv, "library", "function"] proc_name (FormalParam): Type;
  306.  
  307.   - callconv -- ёюуыр°хэшх ю т√чютх
  308.   - "library" -- шь  Їрщыр фшэрьшўхёъющ сшсышюЄхъш
  309.   - "function" -- шь  шьяюЁЄшЁєхьющ яЁюЎхфєЁ√
  310.  
  311.   эряЁшьхЁ:
  312.  
  313.   PROCEDURE [windows, "kernel32.dll", "ExitProcess"] exit (code: INTEGER);
  314.  
  315.   PROCEDURE [stdcall, "Console.obj", "con_exit"] exit (bCloseWindow: BOOLEAN);
  316.  
  317.   ┬ ъюэЎх юс· тыхэш  ьюцхЄ с√Є№ фюсртыхэю (эхюс чрЄхы№эю) "END proc_name;"
  318.  
  319.   ╬с· тыхэш  шьяюЁЄшЁютрээ√ї яЁюЎхфєЁ фюыцэ√ ЁрёяюырурЄ№ё  т уыюсры№эющ
  320.   юсырёЄш тшфшьюёЄш ьюфєы  яюёых юс· тыхэш  яхЁхьхээ√ї, тьхёЄх ё юс· тыхэшхь
  321.   "юс√ўэ√ї" яЁюЎхфєЁ, юЄ ъюЄюЁ√ї шьяюЁЄшЁютрээ√х юЄышўр■Єё  Єюы№ъю юЄёєЄёЄтшхь
  322.   Єхыр яЁюЎхфєЁ√. ┬ юёЄры№эюь, ъ Єръшь яЁюЎхфєЁрь яЁшьхэшь√ Єх цх яЁртшыр:
  323.   шї ьюцэю т√чтрЄ№, яЁшётюшЄ№ яЁюЎхфєЁэющ яхЁхьхээющ шыш яюыєўшЄ№ рфЁхё.
  324.  
  325.   ╥ръ ъръ шьяюЁЄшЁютрээр  яЁюЎхфєЁр тёхуфр шьххЄ  тэюх єърчрэшх ёюуыр°хэш  ю
  326.   т√чютх, Єю ёютьхёЄшь√щ яЁюЎхфєЁэ√щ Єшя Єюцх фюыцхэ с√Є№ юс· тыхэ ё єърчрэшхь
  327.   ёюуыр°хэш  ю т√чютх:
  328.  
  329.   VAR
  330.       ExitProcess: PROCEDURE [windows] (code: INTEGER);
  331.       con_exit:    PROCEDURE [stdcall] (bCloseWindow: BOOLEAN);
  332.  
  333.   ┬ KolibriOS шьяюЁЄшЁютрЄ№ яЁюЎхфєЁ√ ьюцэю Єюы№ъю шч сшсышюЄхъ, Ёрчьх∙хээ√ї
  334.   т /rd/1/lib. ╚ьяюЁЄшЁютрЄ№ ш т√ч√трЄ№ ЇєэъЎшш шэшЎшрышчрЎшш сшсышюЄхъ
  335.   (lib_init, START) яЁш ¤Єюь эх эєцэю.
  336.  
  337.   ─ы  Linux, шьяюЁЄшЁютрээ√х яЁюЎхфєЁ√ эх Ёхрышчютрэ√.
  338.  
  339. ------------------------------------------------------------------------------
  340.         ╤ъЁ√Є√х ярЁрьхЄЁ√ яЁюЎхфєЁ
  341.  
  342.   ═хъюЄюЁ√х яЁюЎхфєЁ√ ьюуєЄ шьхЄ№ ёъЁ√Є√х ярЁрьхЄЁ√, юэш юЄёєЄёЄтє■Є т ёяшёъх
  343. ЇюЁьры№э√ї ярЁрьхЄЁют, эю єўшЄ√тр■Єё  ъюьяшы ЄюЁюь яЁш ЄЁрэёы Ўшш т√чютют.
  344. ▌Єю тючьюцэю т ёыхфє■∙шї ёыєўр ї:
  345.  
  346. 1.      ╧ЁюЎхфєЁр шьххЄ ЇюЁьры№э√щ ярЁрьхЄЁ юЄъЁ√Є√щ ьрёёшт:
  347.                 PROCEDURE Proc (x: ARRAY OF ARRAY OF REAL);
  348.         ┬√чют ЄЁрэёышЁєхЄё  Єръ:
  349.                 Proc(LEN(x), LEN(x[0]), SYSTEM.ADR(x))
  350. 2.      ╧ЁюЎхфєЁр шьххЄ ЇюЁьры№э√щ ярЁрьхЄЁ-яхЁхьхээє■ Єшяр RECORD:
  351.                 PROCEDURE Proc (VAR x: Rec);
  352.         ┬√чют ЄЁрэёышЁєхЄё  Єръ:
  353.                 Proc(SYSTEM.TYPEID(Rec), SYSTEM.ADR(x))
  354.  
  355. ------------------------------------------------------------------------------
  356.         ╠юфєы№ RTL
  357.  
  358.   ┬ёх яЁюуЁрьь√ эх тэю шёяюы№чє■Є ьюфєы№ RTL. ╩юьяшы ЄюЁ ЄЁрэёышЁєхЄ
  359. эхъюЄюЁ√х юяхЁрЎшш (яЁютхЁър ш юїЁрэр Єшяр, ёЁртэхэшх ёЄЁюъ, ёююс∙хэш  юс
  360. ю°шсърї тЁхьхэш т√яюыэхэш  ш фЁ.) ъръ т√чют√ яЁюЎхфєЁ ¤Єюую ьюфєы . ═х
  361. ёыхфєхЄ  тэю т√ч√трЄ№ ¤Єш яЁюЎхфєЁ√, чр шёъы■ўхэшхь яЁюЎхфєЁ√ SetDll,
  362. хёыш яЁшыюцхэшх ъюьяшышЁєхЄё  ъръ Windows DLL:
  363.  
  364.         PROCEDURE SetDll
  365.             (process_detach, thread_detach, thread_attach: DLL_ENTRY);
  366.         уфх TYPE DLL_ENTRY =
  367.             PROCEDURE (hinstDLL, fdwReason, lpvReserved: INTEGER);
  368.  
  369. SetDll эрчэрўрхЄ яЁюЎхфєЁ√ process_detach, thread_detach, thread_attach
  370. т√ч√трхь√ьш яЁш
  371. - т√уЁєчъх dll-сшсышюЄхъш (process_detach)
  372. - ёючфрэшш эютюую яюЄюър (thread_attach)
  373. - єэшўЄюцхэшш яюЄюър (thread_detach)
  374.  
  375. ─ы  яЁюўшї Єшяют яЁшыюцхэшщ, т√чют яЁюЎхфєЁ√ SetDll эх тыш хЄ эр
  376. яютхфхэшх яЁюуЁрьь√.
  377.   ╤ююс∙хэш  юс ю°шсърї тЁхьхэш т√яюыэхэш  т√тюф Єё  т фшрыюуют√ї юъэрї
  378. (Windows), т ЄхЁьшэры (Linux), эр фюёъє юЄырфъш (KolibriOS).
  379.  
  380. ------------------------------------------------------------------------------
  381.         ╠юфєы№ API
  382.  
  383.   ╤є∙хёЄтє■Є эхёъюы№ъю ЁхрышчрЎшщ ьюфєы  API (фы  Ёрчышўэ√ї ╬╤).
  384.   ╩ръ ш ьюфєы№ RTL, ьюфєы№ API эх яЁхфэрчэрўхэ фы  яЁ ьюую шёяюы№чютрэш .
  385. ╬э юсхёяхўштрхЄ ёт ч№ RTL ё ╬╤.
  386.  
  387. ------------------------------------------------------------------------------
  388.         ├хэхЁрЎш  шёяюыэ хь√ї Їрщыют DLL
  389.  
  390.   ╨рчЁх°рхЄё  ¤ъёяюЁЄшЁютрЄ№ Єюы№ъю яЁюЎхфєЁ√. ─ы  ¤Єюую, яЁюЎхфєЁр фюыцэр
  391. эрїюфшЄ№ё  т уыртэюь ьюфєых яЁюуЁрьь√, ш хх шь  фюыцэю с√Є№ юЄьхўхэю ёшьтюыюь
  392. ¤ъёяюЁЄр ("*"). KolibriOS DLL тёхуфр ¤ъёяюЁЄшЁє■Є шфхэЄшЇшърЄюЁ√ "version"
  393. (тхЁёш  яЁюуЁрьь√) ш "lib_init" - рфЁхё яЁюЎхфєЁ√ шэшЎшрышчрЎшш DLL:
  394.  
  395.         PROCEDURE [stdcall] lib_init (): INTEGER
  396.  
  397. ▌Єр яЁюЎхфєЁр фюыцэр с√Є№ т√чтрэр яхЁхф шёяюы№чютрэшхь DLL.
  398. ╧ЁюЎхфєЁр тёхуфр тючтЁр∙рхЄ 1.
  399.  
  400.   ─ы  Linux, ухэхЁрЎш  фшэрьшўхёъшї сшсышюЄхъ эх Ёхрышчютрэр.