Subversion Repositories Kolibri OS

Rev

Blame | 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, £¥­¥à æ¨ï ¤¨­ ¬¨ç¥áª¨å ¡¨¡«¨®â¥ª ­¥ ॠ«¨§®¢ ­ .