kolibrios/programs/develop/oberon07/Docs/About866.txt
Anton Krotov c4dee82cbc update
git-svn-id: svn://kolibrios.org@7693 a494cfbc-eb01-0410-851d-a64ba20cac60
2019-09-26 20:23:06 +00:00

406 lines
17 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Š®¬¯¨«ïâ®à ï§ëª  ¯à®£à ¬¬¨à®¢ ­¨ï Oberon-07/16 ¤«ï i486
Windows/Linux/KolibriOS.
------------------------------------------------------------------------------
<20> à ¬¥âàë ª®¬ ­¤­®© áâப¨
‚室 - ⥪áâ®¢ë¥ ä ©«ë ¬®¤ã«¥© á à áè¨à¥­¨¥¬ ".ob07", ª®¤¨à®¢ª  ANSI ¨«¨
UTF-8 á BOM-ᨣ­ âãன.
‚ë室 - ¨á¯®­ï¥¬ë© ä ©« ä®à¬ â  PE32, ELF ¨«¨ MENUET01/MSCOFF.
<20> à ¬¥âàë:
1) ¨¬ï £« ¢­®£® ¬®¤ã«ï
2) ¨¬ï १ã«ìâ¨àãî饣® ä ©« 
3) ⨯ ¯à¨«®¦¥­¨ï ¨ ¯« âä®à¬ 
"console" - Windows console
"gui" - Windows GUI
"dll" - Windows DLL
"kos" - KolibriOS
"obj" - KolibriOS DLL
"elfexe" - Linux ELF-EXEC
"elfso" - Linux ELF-SO
4) ­¥®¡ï§ â¥«ì­ë¥ ¯ à ¬¥âàë-ª«îç¨
-stk <size> à §¬¥à áâíª  ¢ ¬¥£ ¡ ©â å (¯® 㬮«ç ­¨î 2 Œ¡)
-base <address>  ¤à¥á § £à㧪¨ ¨á¯®«­ï¥¬®£® ä ©«  ¢ ª¨«®¡ ©â å
-ver <major.minor> ¢¥àá¨ï ¯à®£à ¬¬ë (⮫쪮 ¤«ï obj)
-nochk <"ptibcwra"> ®âª«îç¨âì ¯à®¢¥àª¨ ¯à¨ ¢ë¯®«­¥­¨¨ (á¬. ­¨¦¥)
¯ à ¬¥âà -nochk § ¤ ¥âáï ¢ ¢¨¤¥ áâப¨ ¨§ ᨬ¢®«®¢:
"p" - 㪠§ â¥«¨
"t" - ⨯ë
"i" - ¨­¤¥ªáë
"b" - ­¥ï¢­®¥ ¯à¨¢¥¤¥­¨¥ INTEGER ª BYTE
"c" - ¤¨ ¯ §®­  à£ã¬¥­â  ä㭪樨 CHR
"w" - ¤¨ ¯ §®­  à£ã¬¥­â  ä㭪樨 WCHR
"r" - íª¢¨¢ «¥­â­® "bcw"
"a" - ¢á¥ ¯à®¢¥àª¨
<20>®à冷ª ᨬ¢®«®¢ ¬®¦¥â ¡ëâì «î¡ë¬. <20> «¨ç¨¥ ¢ áâப¥ ⮣® ¨«¨ ¨­®£®
ᨬ¢®«  ®âª«îç ¥â ᮮ⢥âáâ¢ãîéãî ¯à®¢¥àªã.
<20> ¯à¨¬¥à: -nochk it - ®âª«îç¨âì ¯à®¢¥àªã ¨­¤¥ªá®¢ ¨ ®åà ­ã ⨯ .
-nochk a - ®âª«îç¨âì ¢á¥ ®âª«îç ¥¬ë¥ ¯à®¢¥àª¨.
<20> ¯à¨¬¥à:
Compiler.exe "C:\example.ob07" "C:\example.exe" console -stk 1
Compiler.exe "C:\example.ob07" "C:\example.dll" dll
Compiler.exe "C:\example.ob07" "C:\example.exe" gui -stk 4
Compiler.exe "C:\example.ob07" "C:\example.exe" console -nochk pti
Compiler.kex "/tmp0/1/example.ob07" "/tmp0/1/example.kex" kos -stk 2
Compiler.kex "/tmp0/1/example.ob07" "/tmp0/1/example.obj" obj -ver 2.7
Compiler.exe "C:\example.ob07" "C:\example" elfexe
á«ãç ¥ ãᯥ譮© ª®¬¯¨«ï樨, ª®¬¯¨«ïâ®à ¯¥à¥¤ ¥â ª®¤ § ¢¥à襭¨ï 0, ¨­ ç¥ 1.
<EFBFBD>ਠࠡ®â¥ ª®¬¯¨«ïâ®à  ¢ KolibriOS, ª®¤ § ¢¥à襭¨ï ­¥ ¯¥à¥¤ ¥âáï.
------------------------------------------------------------------------------
Žâ«¨ç¨ï ®â ®à¨£¨­ « 
1. <20> áè¨à¥­ ¯á¥¢¤®¬®¤ã«ì SYSTEM
2. ¨¤¥­â¨ä¨ª â®à å ¤®¯ã᪠¥âáï ᨬ¢®« "_"
3. „®¡ ¢«¥­ë á¨á⥬­ë¥ ä« £¨
4. “ᮢ¥à襭á⢮¢ ­ ®¯¥à â®à CASE (¤®¡ ¢«¥­ë ª®­áâ ­â­ë¥ ¢ëà ¦¥­¨ï ¢
¬¥âª å ¢ à¨ ­â®¢ ¨ ­¥®¡ï§ â¥«ì­ ï ¢¥âª  ELSE)
5. <20> áè¨à¥­ ­ ¡®à áâ ­¤ àâ­ëå ¯à®æ¥¤ãà
6. ‘¥¬ ­â¨ª  ®åà ­ë/¯à®¢¥àª¨ ⨯  ãâ®ç­¥­  ¤«ï ­ã«¥¢®£® 㪠§ â¥«ï
7. ‘¥¬ ­â¨ª  DIV ¨ MOD ãâ®ç­¥­  ¤«ï ®âà¨æ â¥«ì­ëå ç¨á¥«
8. „®¡ ¢«¥­ë ®¤­®áâà®ç­ë¥ ª®¬¬¥­â à¨¨ (­ ç¨­ îâáï á ¯ àë ᨬ¢®«®¢ "//")
9. <20> §à¥è¥­® ­ á«¥¤®¢ ­¨¥ ®â ⨯ -㪠§ â¥«ï
10. „®¡ ¢«¥­ ᨭ⠪á¨á ¤«ï ¨¬¯®àâ  ¯à®æ¥¤ãà ¨§ ¢­¥è­¨å ¡¨¡«¨®â¥ª
11. "‘âப¨" ¬®¦­® § ª«îç âì â ª¦¥ ¢ ®¤¨­®ç­ë¥ ª ¢ë窨: 'áâப '
12. „®¡ ¢«¥­ ⨯ WCHAR
------------------------------------------------------------------------------
Žá®¡¥­­®á⨠ॠ«¨§ æ¨¨
1. Žá­®¢­ë¥ ⨯ë
’¨¯ „¨ ¯ §®­ §­ ç¥­¨© <20> §¬¥à, ¡ ©â
INTEGER -2147483648 .. 2147483647 4
REAL 4.94E-324 .. 1.70E+308 8
CHAR ᨬ¢®« ASCII (0X .. 0FFX) 1
BOOLEAN FALSE, TRUE 1
SET ¬­®¦¥á⢮ ¨§ 楫ëå ç¨á¥« {0 .. 31} 4
BYTE 0 .. 255 1
WCHAR ᨬ¢®« î­¨ª®¤  (0X .. 0FFFFX) 2
2. Œ ªá¨¬ «ì­ ï ¤«¨­  ¨¤¥­â¨ä¨ª â®à®¢ - 1024 ᨬ¢®«®¢
3. Œ ªá¨¬ «ì­ ï ¤«¨­  áâப®¢ëå ª®­áâ ­â - 1024 ᨬ¢®«®¢ (UTF-8)
4. Œ ªá¨¬ «ì­ ï à §¬¥à­®áâì ®âªàëâëå ¬ áᨢ®¢ - 5
5. <20>à®æ¥¤ãà  NEW § ¯®«­ï¥â ­ã«ï¬¨ ¢ë¤¥«¥­­ë© ¡«®ª ¯ ¬ïâ¨
6. ƒ«®¡ «ì­ë¥ ¨ «®ª «ì­ë¥ ¯¥à¥¬¥­­ë¥ ¨­¨æ¨ «¨§¨àãîâáï ­ã«ï¬¨
7. ®â«¨ç¨¥ ®â ¬­®£¨å Oberon-ॠ«¨§ æ¨©, á¡®à騪 ¬ãá®à  ¨ ¤¨­ ¬¨ç¥áª ï
¬®¤ã«ì­®áâì ®âáãâáâ¢ãîâ
8. ’¨¯ BYTE ¢ ¢ëà ¦¥­¨ïå ¢á¥£¤  ¯à¨¢®¤¨âáï ª INTEGER
9. Š®­âà®«ì ¯¥à¥¯®«­¥­¨ï §­ ç¥­¨© ¢ëà ¦¥­¨© ­¥ ¯à®¨§¢®¤¨âáï
10. Žè¨¡ª¨ ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï:
- ASSERT(x), ¯à¨ x = FALSE
- ࠧ묥­®¢ ­¨¥ ­ã«¥¢®£® 㪠§ â¥«ï
- 楫®ç¨á«¥­­®¥ ¤¥«¥­¨¥ ­  0
- ¢ë§®¢ ¯à®æ¥¤ãàë ç¥à¥§ ¯à®æ¥¤ãà­ãî ¯¥à¥¬¥­­ãî á ­ã«¥¢ë¬ §­ ç¥­¨¥¬
- ®è¨¡ª  ®åà ­ë ⨯ 
- ­ àã襭¨¥ £à ­¨æ ¬ áᨢ 
- ­¥¯à¥¤ãᬮâ७­®¥ §­ ç¥­¨¥ ¢ëà ¦¥­¨ï ¢ ®¯¥à â®à¥ CASE
- ®è¨¡ª  ª®¯¨à®¢ ­¨ï ¬ áᨢ®¢ v := x, ¥á«¨ LEN(v) < LEN(x)
- ­¥ï¢­®¥ ¯à¨¢¥¤¥­¨¥ x:INTEGER ª v:BYTE, ¥á«¨ (x < 0) OR (x > 255)
- CHR(x), ¥á«¨ (x < 0) OR (x > 255)
- WCHR(x), ¥á«¨ (x < 0) OR (x > 65535)
------------------------------------------------------------------------------
<20>ᥢ¤®¬®¤ã«ì SYSTEM
<20>ᥢ¤®¬®¤ã«ì SYSTEM ᮤ¥à¦¨â ­¨§ª®ã஢­¥¢ë¥ ¨ ­¥¡¥§®¯ á­ë¥ ¯à®æ¥¤ãàë,
®è¨¡ª¨ ¯à¨ ¨á¯®«ì§®¢ ­¨¨ ¯à®æ¥¤ãà ¯á¥¢¤®¬®¤ã«ï SYSTEM ¬®£ã⠯ਢ¥á⨠ª
¯®¢à¥¦¤¥­¨î ¤ ­­ëå ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï ¨  ¢ à¨©­®¬ã § ¢¥à襭¨î ¯à®£à ¬¬ë.
PROCEDURE ADR(v: «î¡®© ⨯): INTEGER
v - ¯¥à¥¬¥­­ ï ¨«¨ ¯à®æ¥¤ãà ;
¢®§¢à é ¥â  ¤à¥á v
PROCEDURE SADR(x: áâப®¢ ï ª®­áâ ­â  (CHAR UTF-8)): INTEGER
¢®§¢à é ¥â  ¤à¥á x
PROCEDURE WSADR(x: áâப®¢ ï ª®­áâ ­â  (WCHAR)): INTEGER
¢®§¢à é ¥â  ¤à¥á x
PROCEDURE SIZE(T): INTEGER
¢®§¢à é ¥â à §¬¥à ⨯  T
PROCEDURE TYPEID(T): INTEGER
T - ⨯-§ ¯¨áì ¨«¨ ⨯-㪠§ â¥«ì,
¢®§¢à é ¥â ­®¬¥à ⨯  ¢ â ¡«¨æ¥ ⨯®¢-§ ¯¨á¥©
PROCEDURE INF(): REAL
¢®§¢à é ¥â ᯥ樠«ì­®¥ ¢¥é¥á⢥­­®¥ §­ ç¥­¨¥ "¡¥áª®­¥ç­®áâì"
PROCEDURE GET(a: INTEGER;
VAR v: «î¡®© ®á­®¢­®© ⨯, PROCEDURE, POINTER)
v := <20> ¬ïâì[a]
PROCEDURE PUT(a: INTEGER; x: «î¡®© ®á­®¢­®© ⨯, PROCEDURE, POINTER)
<20> ¬ïâì[a] := x;
…᫨ x: BYTE ¨«¨ x: WCHAR, â® §­ ç¥­¨¥ x ¡ã¤¥â à áè¨à¥­®
¤® 32 ¡¨â, ¤«ï § ¯¨á¨ ¡ ©â®¢ ¨á¯®«ì§®¢ âì SYSTEM.PUT8,
¤«ï WCHAR -- SYSTEM.PUT16
PROCEDURE PUT8(a: INTEGER; x: INTEGER, SET, BYTE, CHAR, WCHAR)
<20> ¬ïâì[a] := ¬« ¤è¨¥ 8 ¡¨â (x)
PROCEDURE PUT16(a: INTEGER; x: INTEGER, SET, BYTE, CHAR, WCHAR)
<20> ¬ïâì[a] := ¬« ¤è¨¥ 16 ¡¨â (x)
PROCEDURE MOVE(Source, Dest, n: INTEGER)
Š®¯¨àã¥â n ¡ ©â ¯ ¬ï⨠¨§ Source ¢ Dest,
®¡« á⨠Source ¨ Dest ­¥ ¬®£ãâ ¯¥à¥ªà뢠âìáï
PROCEDURE COPY(VAR Source: «î¡®© ⨯; VAR Dest: «î¡®© ⨯; n: INTEGER)
Š®¯¨àã¥â n ¡ ©â ¯ ¬ï⨠¨§ Source ¢ Dest.
<20>ª¢¨¢ «¥­â­®
SYSTEM.MOVE(SYSTEM.ADR(Source), SYSTEM.ADR(Dest), n)
PROCEDURE CODE(byte1, byte2,... : INTEGER)
‚áâ ¢ª  ¬ è¨­­®£® ª®¤ ,
byte1, byte2 ... - ª®­áâ ­âë ¢ ¤¨ ¯ §®­¥ 0..255,
­ ¯à¨¬¥à:
SYSTEM.CODE(08BH, 045H, 008H) (* mov eax, dword [ebp + 08h] *)
’ ª¦¥ ¢ ¬®¤ã«¥ SYSTEM ®¯à¥¤¥«¥­ ⨯ CARD16 (2 ¡ ©â ). „«ï ⨯  CARD16 ­¥
¤®¯ã᪠îâáï ­¨ª ª¨¥ ï¢­ë¥ ®¯¥à æ¨¨, §  ¨áª«î祭¨¥¬ ¯à¨á¢ ¨¢ ­¨ï.
<EFBFBD>८¡à §®¢ ­¨ï CARD16 -> INTEGER ¨ INTEGER -> CARD16 ¬®£ãâ ¡ëâì ॠ«¨§®¢ ­ë
â ª:
PROCEDURE Card16ToInt (w: SYSTEM.CARD16): INTEGER;
VAR i: INTEGER;
BEGIN
SYSTEM.PUT(SYSTEM.ADR(i), w)
RETURN i
END Card16ToInt;
PROCEDURE IntToCard16 (i: INTEGER): SYSTEM.CARD16;
VAR w: SYSTEM.CARD16;
BEGIN
SYSTEM.GET(SYSTEM.ADR(i), w)
RETURN w
END IntToCard16;
”㭪樨 ¯á¥¢¤®¬®¤ã«ï SYSTEM ­¥«ì§ï ¨á¯®«ì§®¢ âì ¢ ª®­áâ ­â­ëå ¢ëà ¦¥­¨ïå.
------------------------------------------------------------------------------
‘¨á⥬­ë¥ ä« £¨
<20>ਠ®¡ê¥­¨¨ ¯à®æ¥¤ãà­ëå ⨯®¢ ¨ £«®¡ «ì­ëå ¯à®æ¥¤ãà, ¯®á«¥ ª«î祢®£®
á«®¢  PROCEDURE ¬®¦¥â ¡ëâì 㪠§ ­ ä« £ ᮣ« è¥­¨ï ® ¢ë§®¢¥: [stdcall],
[ccall], [ccall16], [windows], [linux]. <20> ¯à¨¬¥à:
PROCEDURE [ccall] MyProc (x, y, z: INTEGER): INTEGER;
…᫨ 㪠§ ­ ä« £ [ccall16], â® ¯à¨­¨¬ ¥âáï ᮣ« è¥­¨¥ ccall, ­® ¯¥à¥¤
¢ë§®¢®¬ 㪠§ â¥«ì áâíª  ¡ã¤¥â ¢ëà ¢­¥­ ¯® £à ­¨æ¥ 16 ¡ ©â.
”« £ [windows] - ᨭ®­¨¬ ¤«ï [stdcall], [linux] - ᨭ®­¨¬ ¤«ï [ccall16].
‡­ ª "-" ¯®á«¥ ¨¬¥­¨ ä« £  ([stdcall-], [linux-], ...) ®§­ ç ¥â, çâ®
१ã«ìâ â ¯à®æ¥¤ãàë ¬®¦­® ¨£­®à¨à®¢ âì (­¥ ¤®¯ã᪠¥âáï ¤«ï ⨯  REAL).
<20>ਠ®¡ê¥­¨¨ ⨯®¢-§ ¯¨á¥©, ¯®á«¥ ª«î祢®£® á«®¢  RECORD ¬®¦¥â ¡ëâì
㪠§ ­ ä« £ [noalign]. ”« £ [noalign] ®§­ ç ¥â ®âáãâá⢨¥ ¢ëà ¢­¨¢ ­¨ï ¯®«¥©
§ ¯¨á¨. ‡ ¯¨á¨ á á¨á⥬­ë¬ ä« £®¬ ­¥ ¬®£ãâ ¨¬¥âì ¡ §®¢ë© ⨯ ¨ ­¥ ¬®£ãâ ¡ëâì
¡ §®¢ë¬¨ ⨯ ¬¨ ¤«ï ¤àã£¨å § ¯¨á¥©.
„«ï ¨á¯®«ì§®¢ ­¨ï á¨á⥬­ëå ä« £®¢, âॡã¥âáï ¨¬¯®àâ¨à®¢ âì SYSTEM.
------------------------------------------------------------------------------
Ž¯¥à â®à CASE
‘¨­â ªá¨á ®¯¥à â®à  CASE:
CaseStatement =
CASE Expression OF ase {"|" ase}
[ELSE StatementSequence] END.
Case = [CaseLabelList ":" StatementSequence].
CaseLabelList = CaseLabels {"," CaseLabels}.
CaseLabels = ConstExpression [".." ConstExpression].
<20> ¯à¨¬¥à:
CASE x OF
|-1: DoSomething1
| 1: DoSomething2
| 0: DoSomething3
ELSE
DoSomething4
END
¬¥âª å ¢ à¨ ­â®¢ ¬®¦­® ¨á¯®«ì§®¢ âì ª®­áâ ­â­ë¥ ¢ëà ¦¥­¨ï, ¢¥âª  ELSE
­¥®¡ï§ â¥«ì­ . …᫨ §­ ç¥­¨¥ x ­¥ ᮮ⢥âáâ¢ã¥â ­¨ ®¤­®¬ã ¢ à¨ ­âã ¨ ELSE
®âáãâáâ¢ã¥â, â® ¯à®£à ¬¬  ¯à¥à뢠¥âáï á ®è¨¡ª®© ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï.
------------------------------------------------------------------------------
’¨¯ WCHAR
’¨¯ WCHAR ¤®¡ ¢«¥­ ¢ ï§ëª ¤«ï 㤮¡­®© ¯®¤¤¥¦ª¨ î­¨ª®¤ . „«ï ⨯®¢ WCHAR ¨
ARRAY OF WCHAR ¤®¯ã᪠îâáï ¢á¥ â¥ ¦¥ ®¯¥à æ¨¨, ª ª ¤«ï ⨯®¢ CHAR ¨
ARRAY OF CHAR, §  ¨áª«î祭¨¥¬ ¢áâ஥­­®© ¯à®æ¥¤ãàë CHR, ª®â®à ï ¢®§¢à é ¥â
⮫쪮 ⨯ CHAR. „«ï ¯®«ã祭¨ï §­ ç¥­¨ï ⨯  WCHAR, á«¥¤ã¥â ¨á¯®«ì§®¢ âì
¯à®æ¥¤ãàã WCHR ¢¬¥áâ® CHR. „«ï ¯à ¢¨«ì­®© à ¡®âë á ⨯®¬, ­¥®¡å®¤¨¬® á®åà ­ïâì
¨á室­ë© ª®¤ ¢ ª®¤¨à®¢ª¥ UTF-8 c BOM.
------------------------------------------------------------------------------
<20>஢¥àª  ¨ ®åà ­  ⨯  ­ã«¥¢®£® 㪠§ â¥«ï
Žà¨£¨­ «ì­®¥ á®®¡é¥­¨¥ ® ï§ëª¥ ­¥ ®¯à¥¤¥«ï¥â ¯®¢¥¤¥­¨¥ ¯à®£à ¬¬ë ¯à¨
¢ë¯®«­¥­¨¨ ®åà ­ë p(T) ¨ ¯à®¢¥àª¨ ⨯  p IS T ¯à¨ p = NIL. ‚® ¬­®£¨å
Oberon-ॠ«¨§ æ¨ïå ¢ë¯®«­¥­¨¥ â ª®© ®¯¥à æ¨¨ ¯à¨¢®¤¨â ª ®è¨¡ª¥ ¢à¥¬¥­¨
¢ë¯®«­¥­¨ï. ¤ ­­®© ॠ«¨§ æ¨¨ ®åà ­  ⨯  ­ã«¥¢®£® 㪠§ â¥«ï ­¥ ¯à¨¢®¤¨â ª
®è¨¡ª¥,   ¯à®¢¥àª  ⨯  ¤ ¥â १ã«ìâ â FALSE. à拉 á«ãç ¥¢ íâ® ¯®§¢®«ï¥â
§­ ç¨â¥«ì­® ᮪à â¨âì ç áâ®â㠯ਬ¥­¥­¨ï ®åà ­ë ⨯ .
------------------------------------------------------------------------------
„®¯®«­¨â¥«ì­ë¥ áâ ­¤ àâ­ë¥ ¯à®æ¥¤ãàë
DISPOSE (VAR v: «î¡®©_㪠§ â¥«ì)
Žá¢®¡®¦¤ ¥â ¯ ¬ïâì, ¢ë¤¥«¥­­ãî ¯à®æ¥¤ãன NEW ¤«ï
¤¨­ ¬¨ç¥áª®© ¯¥à¥¬¥­­®© v^, ¨ ¯à¨á¢ ¨¢ ¥â ¯¥à¥¬¥­­®© v
§­ ç¥­¨¥ NIL.
COPY (x: ARRAY OF CHAR/WCHAR; VAR v: ARRAY OF CHAR/WCHAR);
v := x;
…᫨ LEN(v) < LEN(x), â® áâப  x ¡ã¤¥â ᪮¯¨à®¢ ­ 
­¥ ¯®«­®áâìî
LSR (x, n: INTEGER): INTEGER
‹®£¨ç¥áª¨© ᤢ¨£ x ­  n ¡¨â ¢¯à ¢®.
MIN (a, b: INTEGER): INTEGER
Œ¨­¨¬ã¬ ¨§ ¤¢ãå §­ ç¥­¨©.
MAX (a, b: INTEGER): INTEGER
Œ ªá¨¬ã¬ ¨§ ¤¢ãå §­ ç¥­¨©.
BITS (x: INTEGER): SET
ˆ­â¥à¯à¥â¨àã¥â x ª ª §­ ç¥­¨¥ ⨯  SET.
‚믮«­ï¥âáï ­  íâ ¯¥ ª®¬¯¨«ï樨.
LENGTH (s: ARRAY OF CHAR/WCHAR): INTEGER
„«¨­  0X-§ ¢¥à襭­®© áâப¨ s, ¡¥§ ãç¥â  ᨬ¢®«  0X.
…᫨ ᨬ¢®« 0X ®âáãâáâ¢ã¥â, äã­ªæ¨ï ¢®§¢à é ¥â ¤«¨­ã
¬ áᨢ  s. s ­¥ ¬®¦¥â ¡ëâì ª®­á⠭⮩.
WCHR (n: INTEGER): WCHAR
<20>८¡à §®¢ ­¨¥ ⨯ ,  ­ «®£¨ç­® CHR(n: INTEGER): CHAR
------------------------------------------------------------------------------
DIV ¨ MOD
x y x DIV y x MOD y
5 3 1 2
-5 3 -2 1
5 -3 -2 -1
-5 -3 1 -2
------------------------------------------------------------------------------
ˆ¬¯®àâ¨à®¢ ­­ë¥ ¯à®æ¥¤ãàë
‘¨­â ªá¨á ¨¬¯®àâ :
PROCEDURE [callconv, "library", "function"] proc_name (FormalParam): Type;
- callconv -- ᮣ« è¥­¨¥ ® ¢ë§®¢¥
- "library" -- ¨¬ï ä ©«  ¤¨­ ¬¨ç¥áª®© ¡¨¡«¨®â¥ª¨
- "function" -- ¨¬ï ¨¬¯®àâ¨à㥬®© ¯à®æ¥¤ãàë
­ ¯à¨¬¥à:
PROCEDURE [windows, "kernel32.dll", "ExitProcess"] exit (code: INTEGER);
PROCEDURE [stdcall, "Console.obj", "con_exit"] exit (bCloseWindow: BOOLEAN);
ª®­æ¥ ®¡ê¥­¨ï ¬®¦¥â ¡ëâì ¤®¡ ¢«¥­® (­¥®¡ï§ â¥«ì­®) "END proc_name;"
Ž¡ê¥­¨ï ¨¬¯®àâ¨à®¢ ­­ëå ¯à®æ¥¤ãà ¤®«¦­ë à á¯®« £ âìáï ¢ £«®¡ «ì­®©
®¡« á⨠¢¨¤¨¬®á⨠¬®¤ã«ï ¯®á«¥ ®¡ê¥­¨ï ¯¥à¥¬¥­­ëå, ¢¬¥áâ¥ á ®¡ê¥­¨¥¬
"®¡ëç­ëå" ¯à®æ¥¤ãà, ®â ª®â®àëå ¨¬¯®àâ¨à®¢ ­­ë¥ ®â«¨ç îâáï ⮫쪮 ®âáãâá⢨¥¬
⥫  ¯à®æ¥¤ãàë. ®áâ «ì­®¬, ª â ª¨¬ ¯à®æ¥¤ãà ¬ ¯à¨¬¥­¨¬ë ⥠¦¥ ¯à ¢¨« :
¨å ¬®¦­® ¢ë§¢ âì, ¯à¨á¢®¨âì ¯à®æ¥¤ãà­®© ¯¥à¥¬¥­­®© ¨«¨ ¯®«ãç¨âì  ¤à¥á.
’ ª ª ª ¨¬¯®àâ¨à®¢ ­­ ï ¯à®æ¥¤ãà  ¢á¥£¤  ¨¬¥¥â ®¥ 㪠§ ­¨¥ ᮣ« è¥­¨ï ®
¢ë§®¢¥, ⮠ᮢ¬¥áâ¨¬ë© ¯à®æ¥¤ãà­ë© ⨯ ⮦¥ ¤®«¦¥­ ¡ëâì ®¡ê¥­ á 㪠§ ­¨¥¬
ᮣ« è¥­¨ï ® ¢ë§®¢¥:
VAR
ExitProcess: PROCEDURE [windows] (code: INTEGER);
con_exit: PROCEDURE [stdcall] (bCloseWindow: BOOLEAN);
KolibriOS ¨¬¯®àâ¨à®¢ âì ¯à®æ¥¤ãàë ¬®¦­® ⮫쪮 ¨§ ¡¨¡«¨®â¥ª, à §¬¥é¥­­ëå
¢ /rd/1/lib. ˆ¬¯®àâ¨à®¢ âì ¨ ¢ë§ë¢ âì ä㭪樨 ¨­¨æ¨ «¨§ æ¨¨ ¡¨¡«¨®â¥ª
(lib_init, START) ¯à¨ í⮬ ­¥ ­ã¦­®.
„«ï Linux, ¨¬¯®àâ¨à®¢ ­­ë¥ ¯à®æ¥¤ãàë ­¥ ॠ«¨§®¢ ­ë.
------------------------------------------------------------------------------
‘ªàëâë¥ ¯ à ¬¥âàë ¯à®æ¥¤ãà
<20>¥ª®â®àë¥ ¯à®æ¥¤ãàë ¬®£ãâ ¨¬¥âì áªàëâë¥ ¯ à ¬¥âàë, ®­¨ ®âáãâáâ¢ãîâ ¢ ᯨ᪥
ä®à¬ «ì­ëå ¯ à ¬¥â஢, ­® ãç¨â뢠îâáï ª®¬¯¨«ïâ®à®¬ ¯à¨ âà ­á«ï樨 ¢ë§®¢®¢.
<EFBFBD>â® ¢®§¬®¦­® ¢ á«¥¤ãîé¨å á«ãç ïå:
1. <20>à®æ¥¤ãà  ¨¬¥¥â ä®à¬ «ì­ë© ¯ à ¬¥âà ®âªàëâë© ¬ áᨢ:
PROCEDURE Proc (x: ARRAY OF ARRAY OF REAL);
‚맮¢ â࠭᫨àã¥âáï â ª:
Proc(LEN(x), LEN(x[0]), SYSTEM.ADR(x))
2. <20>à®æ¥¤ãà  ¨¬¥¥â ä®à¬ «ì­ë© ¯ à ¬¥âà-¯¥à¥¬¥­­ãî ⨯  RECORD:
PROCEDURE Proc (VAR x: Rec);
‚맮¢ â࠭᫨àã¥âáï â ª:
Proc(SYSTEM.TYPEID(Rec), SYSTEM.ADR(x))
------------------------------------------------------------------------------
Œ®¤ã«ì RTL
‚ᥠ¯à®£à ¬¬ë ­¥ï¢­® ¨á¯®«ì§ãîâ ¬®¤ã«ì RTL. Š®¬¯¨«ïâ®à â࠭᫨àã¥â
­¥ª®â®àë¥ ®¯¥à æ¨¨ (¯à®¢¥àª  ¨ ®åà ­  ⨯ , áà ¢­¥­¨¥ áâப, á®®¡é¥­¨ï ®¡
®è¨¡ª å ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï ¨ ¤à.) ª ª ¢ë§®¢ë ¯à®æ¥¤ãà í⮣® ¬®¤ã«ï. <20>¥
á«¥¤ã¥â ® ¢ë§ë¢ âì í⨠¯à®æ¥¤ãàë, §  ¨áª«î祭¨¥¬ ¯à®æ¥¤ãà SetDll ¨ SetFini
¥á«¨ ¯à¨«®¦¥­¨¥ ª®¬¯¨«¨àã¥âáï ª ª Windows DLL ¨«¨ Linux SO, ᮮ⢥âá⢥­­®:
PROCEDURE SetDll
(process_detach, thread_detach, thread_attach: DLL_ENTRY);
£¤¥ TYPE DLL_ENTRY =
PROCEDURE (hinstDLL, fdwReason, lpvReserved: INTEGER);
SetDll ­ §­ ç ¥â ¯à®æ¥¤ãàë process_detach, thread_detach, thread_attach
¢ë§ë¢ ¥¬ë¬¨ ¯à¨
- ¢ë£à㧪¥ dll-¡¨¡«¨®â¥ª¨ (process_detach)
- ᮧ¤ ­¨¨ ­®¢®£® ¯®â®ª  (thread_attach)
- ã­¨ç⮦¥­¨¨ ¯®â®ª  (thread_detach)
PROCEDURE SetFini (ProcFini: PROC);
£¤¥ TYPE PROC = PROCEDURE (* ¡¥§ ¯ à ¬¥â஢ *)
SetFini ­ §­ ç ¥â ¯à®æ¥¤ãàã ProcFini ¢ë§ë¢ ¥¬®© ¯à¨ ¢ë£à㧪¥ so-¡¨¡«¨®â¥ª¨.
„«ï ¯à®ç¨å ⨯®¢ ¯à¨«®¦¥­¨©, ¢ë§®¢ ¯à®æ¥¤ãà SetDll ¨ SetFini ­¥ ¢«¨ï¥â ­ 
¯®¢¥¤¥­¨¥ ¯à®£à ¬¬ë.
‘®®¡é¥­¨ï ®¡ ®è¨¡ª å ¢à¥¬¥­¨ ¢ë¯®«­¥­¨ï ¢ë¢®¤ïâáï ¢ ¤¨ «®£®¢ëå ®ª­ å
(Windows), ¢ â¥à¬¨­ « (Linux), ­  ¤®áªã ®â« ¤ª¨ (KolibriOS).
------------------------------------------------------------------------------
Œ®¤ã«ì API
‘ãé¥áâ¢ãîâ ­¥áª®«ìª® ॠ«¨§ æ¨© ¬®¤ã«ï API (¤«ï à §«¨ç­ëå Ž‘).
Š ª ¨ ¬®¤ã«ì RTL, ¬®¤ã«ì API ­¥ ¯à¥¤­ §­ ç¥­ ¤«ï ¯àאַ£® ¨á¯®«ì§®¢ ­¨ï.
Ž­ ®¡¥á¯¥ç¨¢ ¥â á¢ï§ì RTL á Ž‘.
------------------------------------------------------------------------------
ƒ¥­¥à æ¨ï ¨á¯®«­ï¥¬ëå ä ©«®¢ DLL
<20> §à¥è ¥âáï íªá¯®àâ¨à®¢ âì ⮫쪮 ¯à®æ¥¤ãàë. „«ï í⮣®, ¯à®æ¥¤ãà  ¤®«¦­ 
­ å®¤¨âìáï ¢ £« ¢­®¬ ¬®¤ã«¥ ¯à®£à ¬¬ë, ¨ ¥¥ ¨¬ï ¤®«¦­® ¡ëâì ®â¬¥ç¥­® ᨬ¢®«®¬
íªá¯®àâ  ("*"). KolibriOS DLL ¢á¥£¤  íªá¯®àâ¨àãîâ ¨¤¥­â¨ä¨ª â®àë "version"
(¢¥àá¨ï ¯à®£à ¬¬ë) ¨ "lib_init" -  ¤à¥á ¯à®æ¥¤ãàë ¨­¨æ¨ «¨§ æ¨¨ DLL:
PROCEDURE [stdcall] lib_init (): INTEGER
<EFBFBD>â  ¯à®æ¥¤ãà  ¤®«¦­  ¡ëâì ¢ë§¢ ­  ¯¥à¥¤ ¨á¯®«ì§®¢ ­¨¥¬ DLL.
<EFBFBD>à®æ¥¤ãà  ¢á¥£¤  ¢®§¢à é ¥â 1.