home *** CD-ROM | disk | FTP | other *** search
- ù Ç æ Æ £ 3.
-
- TURBO PASCAL éìôÆÉê.
-
- âïÇéÇ 16.
-
- ÅÇîƒÆ£.
-
- ¥Γá ú½áóá «»¿ßδóáÑΓ ó ñÑΓá½∩σ ß»«ß«íδ ¿ß»«½∞º«óá¡¿∩ »á¼∩Γ¿
- »α«úαἼἿ ¡á Turbo Pascal. îδ »«ß¼«Γα¿¼ ¬áαΓπ »á¼∩Γ¿ »α«úαá¼¼ ¡á
- Turbo Pascal, ó¡πΓαÑ¡¡¿Ñ Σ«α¼áΓδ ñá¡¡δσ, ¼«¡¿Γ«α ¬πτ¿ ¿ »α∩¼«⌐
- ñ«ßΓπ» ¬ »á¼∩Γ¿.
-
-
- èáαΓá »á¼∩Γ¿ Turbo Pascal.
-
- É¿ß. 16.1 »αÑñßΓáó½∩ÑΓ αáß»αÑñѽѡ¿Ñ »á¼∩Γ¿ ñ½∩ »α«úαá¼¼δ ¡á
- Turbo Pascal.
- ÅαÑΣ¿¬ß ßÑú¼Ñ¡Γá »α«úαá¼¼δ (Program Segment Prefix - PSP) -
- φΓ« 256-Γ¿ íá⌐Γ«óá∩ «í½áßΓ∞, ß«ºñáóáѼá∩ DOS »α¿ ºáúαπº¬Ñ
- »α«úαá¼¼δ. ÇñαÑß ßÑú¼Ñ¡Γá PSP σαá¡¿Γß∩ ó »ÑαѼѡ¡«⌐ PrefixSeg.
- èáªñδ⌐ ¼«ñπ½∞ (¿ ú½áó¡á∩ »α«úαá¼¼á ¿ ¬áªñδ⌐ ¼«ñπ½∞) ¿¼ÑÑΓ ßó«⌐
- ¬«ñ«óδ⌐ ßÑú¼Ñ¡Γ. â½áó¡á∩ »α«úαá¼¼á ºá¡¿¼áÑΓ »Ñαóδ⌐ ¬«ñ«óδ⌐ ßÑú¼Ñ¡Γ;
- ¬«ñ«óδÑ ßÑú¼Ñ¡Γδ, ¬«Γ«αδÑ ß½ÑñπεΓ ºá ¡¿¼, ºá¡¿¼áεΓ ¼«ñ㫨 (ó
- »«α∩ñ¬Ñ, «íαáΓ¡«¼ Γ«¼π, ¬á¬ «¡¿ ß½Ññ«ó὿ ó «»ÑαáΓ«αÑ uses), ¿
- »«ß½Ññ¡¿⌐ ¬«ñ«óδ⌐ ßÑú¼Ñ¡Γ ºá¡¿¼áÑΓ í¿í½¿«ΓѬá óαѼѡ¿ óδ»«½¡Ñ¡¿∩
- (¼«ñπ½∞ System). ÉẼÑα «ñ¡«ú« ¬«ñ«ó«ú« ßÑú¼Ñ¡Γá ¡Ñ ¼«ªÑΓ »αÑóδΦáΓ∞
- 64è, ¡« «íΘ¿⌐ αẼÑα ¬«ñá «úαá¡¿τÑ¡ Γ«½∞¬« ¿¼ÑεΘÑ⌐ß∩ »á¼∩Γ∞ε.
-
- É¿ß. 16.1. Éáß»αÑñѽѡ¿Ñ »á¼∩Γ¿ ó Turbo Pascal.
-
- éÑασ¡∩∩ úαá¡¿µá »á¼∩Γ¿ DOS
-
- HeapEnd ──÷┌────────────────────────────┐
- │ │
- │ ßó«í«ñ¡á∩ »á¼∩Γ∞ │
- │ │
- HeapPtr ──÷│............................│
- │ ¬πτá (αáßΓÑΓ óóÑασ) │
- HeapOrg ──÷├────────────────────────────┤≈── OvrHeapEnd
- │ «óÑα½Ñ⌐¡δ⌐ íπΣÑα │
- ├────────────────────────────┤≈── OvrHeapOrg
- │ ßΓѬ (αáßΓÑΓ ó¡¿º) │
- SSeg:SPtr ──÷│............................│
- │ ßó«í«ñ¡δ⌐ ßΓѬ │
- SSeg:0000 ──÷├────────────────────────────┤
- │ ú½«íá½∞¡δÑ »ÑαѼѡ¡δÑ │
- │............................│≈───────┐
- │ Γ¿»¿α«óá¡¡δÑ ¬«¡ßΓá¡Γδ │ │
- DSeg:0000 ──÷├────────────────────────────┤ │
- │ ¬«ñ«óδ⌐ ßÑú¼Ñ¡Γ │ │
- │ ¼«ñπ½∩ System │ │
- │............................│ │
- │ ¬«ñ«óδ⌐ ßÑú¼Ñ¡Γ │ │
- │ »Ñαó«ú« ¼«ñπ½∩ │ │
- │............................│ │
- └────────────────────────────┘ │
- . ¬«ñ«óδ⌐ ßÑú¼Ñ¡Γ . ß«ñÑαªáΓ «íαáº
- . ñαπú¿σ ¼«ñπ½Ñ⌐ . .EXE Σá⌐½á
- ┌────────────────────────────┐ │
- │............................│ │
- │ ¬«ñ«óδ⌐ ßÑú¼Ñ¡Γ │ │
- │ »«ß½Ññ¡Ñú« ¼«ñπ½∩ │ │
- ├────────────────────────────┤ │
- │ ¬«ñ«óδ⌐ ßÑú¼Ñ¡Γ │ │
- │ ú½áó¡«⌐ »α«úαá¼¼δ │ │
- ├────────────────────────────┤≈───────┘
- │ »αÑΣ¿¬ß ßÑú¼Ñ¡Γá »α«úαá¼¼δ │
- │ (PSP) │
- PrefixSeg ──÷└────────────────────────────┘
- 쿪¡∩∩ úαá¡¿µá »á¼∩Γ¿ DOS
-
-
- æÑú¼Ñ¡Γ ñá¡¡δσ (áñαÑßπѼδ⌐ τÑαѺ DS) ß«ñÑαª¿Γ óßÑ ú½«íá½∞¡δÑ
- »ÑαѼѡ¡δÑ ¿ ºáΓѼ óßÑ Γ¿»¿α«óá¡¡δÑ ¬«¡ßΓá¡Γδ. ÉÑú¿ßΓα DS ¡¿¬«úñá
- ¡Ñ ¿º¼Ñ¡∩ÑΓß∩ ó« óαѼ∩ óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ. ÉẼÑα ßÑú¼Ñ¡Γá ñá¡¡δσ
- ¡Ñ ¼«ªÑΓ »αÑóδΦáΓ∞ 64è.
- Åα¿ ºá»π᪥ »α«úαá¼¼δ αÑú¿ßΓα ßÑú¼Ñ¡Γá ßΓѬá (SS) ¿ π¬áºáΓѽ∞
- ßΓѬá (SP) πßΓá¡áó½¿óáεΓß∩ Γá¬, τΓ« SS:SP π¬áºδóáÑΓ ¡á »Ñαóδ⌐ íá⌐Γ
- »«ß½Ñ ßÑú¼Ñ¡Γá ßΓѬá. ÉÑú¿ßΓα SS ¡¿¬«úñá ¡Ñ ¿º¼Ñ¡∩ÑΓß∩ ó« óαѼ∩
- óδ»«½¡Ñ¡¿∩ »α«úαá¼¼δ, á SP ¼«ªÑΓ »ÑαÑñó¿úáΓ∞ß∩ 󡿺 »«¬á ¡Ñ
- ñ«ßΓ¿ú¡ÑΓ ¬«¡µá ßÑú¼Ñ¡Γá. ÉẼÑα ßΓѬ«ó«ú« ßÑú¼Ñ¡Γá ¡Ñ ¼«ªÑΓ
- »αÑóδΦáΓ∞ 64è; αẼÑα »« π¼«½τá¡¿ε - 16è, «¡ ¼«ªÑΓ íδΓ∞ ¿º¼Ñ¡Ñ¡
- ñ¿αÑ¬Γ¿ó«⌐ ¬«¼»¿½∩Γ«αá $M.
- üπΣÑα «óÑα½ÑÑó ¿ß»«½∞ºπÑΓß∩ ßΓá¡ñáαΓ¡δ¼ ¼«ñπ½Ñ¼ Overlay ñ½∩
- σαá¡Ñ¡¿∩ «óÑα½Ñ⌐¡«ú« ¬«ñá. ÉẼÑα «óÑα½Ñ⌐¡«ú« íπΣÑαá »« π¼«½τá¡¿ε
- ß««ΓóÑΓßΓóπÑΓ αẼÑαπ ¡á¿í«½∞ΦÑú« «óÑα½Ñ∩ ó »α«úαá¼¼Ñ; Ñß½¿ ó
- »α«úαá¼¼Ñ ¡ÑΓ «óÑα½ÑÑó, αẼÑα íπΣÑαá «óÑα½ÑÑó αáóÑ¡ 0. ÉẼÑα
- íπΣÑαá «óÑα½ÑÑó ¼«ªÑΓ íδΓ∞ πóѽ¿τÑ¡ ß »«¼«Θ∞ε ó맮óá »α«úαá¼¼δ
- OvrSetBuf ¼«ñπ½∩ Overlay; ó φΓ«¼ ß½πτáÑ αẼÑα ¬πτ¿ ß««ΓóÑΓßΓóÑ¡¡«
- π¼Ñ¡∞ΦáÑΓß∩, ß¼ÑΘÑ¡¿Ñ¼ óóÑασ HeapOrg.
- èπτá σαá¡¿Γ ñ¿¡á¼¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ, Γ« ÑßΓ∞ »ÑαѼѡ¡δÑ,
- αáß»αÑñѽѡ¡δÑ τÑαѺ ó맮ó ßΓá¡ñáαΓ¡δσ »α«µÑñπα New ¿ GetMem. èπτá
- ºá¡¿¼áÑΓ óßε ¿½¿ τáßΓ∞ ßó«í«ñ¡«⌐ »á¼∩Γ¿, «ßΓáóΦÑ⌐ß∩ »«ß½Ñ ºáúαπº¬¿
- »α«úαá¼¼δ. öá¬Γ¿τÑ߬¿ αẼÑα ¬πτ¿ ºáó¿ß¿Γ «Γ ¼¿¡¿¼á½∞¡«ú« ¿
- ¼á¬ß¿¼á½∞¡«ú« º¡áτÑ¡¿⌐ ¬πτ¿, ¬«Γ«αδÑ ¼«úπΓ íδΓ∞ πßΓá¡«ó½Ñ¡δ
- ñ¿αÑ¬Γ¿ó«⌐ ¬«¼»¿½∩Γ«αá $M. ÉẼÑα ¬πτ¿ ¡¿¬«úñá ¡Ñ íπñÑΓ ¼Ñ¡∞ΦÑ
- ¼¿¡¿¼á½∞¡«ú« º¡áτÑ¡¿∩ ¿ ¡Ñ »αÑóδß¿Γ ¼á¬ß¿¼á½∞¡«ú«. àß½¿ ó ß¿ßΓѼÑ
- ¡ÑΓ »á¼∩Γ¿ αáó¡«ú« ¼¿¡¿¼á½∞¡«¼π º¡áτÑ¡¿ε, »α«úαá¼¼á ¡Ñ íπñÑΓ
- óδ»«½¡∩Γ∞ß∩. î¿¡¿¼á½∞¡«Ñ º¡áτÑ¡¿Ñ ¬πτ¿ »« π¼«½τá¡¿ε αáó¡« 0 íá⌐Γ,
- ¼á¬ß¿¼á½∞¡«Ñ - 640è; φΓ« «º¡áτáÑΓ, τΓ« »« π¼«½τá¡¿ε ¬πτá íπñÑΓ
- ºá¡¿¼áΓ∞ óßε «ßΓáóΦπεß∩ »á¼∩Γ∞.
- ô»αáó½Ñ¡¿Ñ ¬πτÑ⌐ «ßπΘÑßΓó½∩ÑΓ ¼«¡¿Γ«α ¬πτ¿ (¬«Γ«αδ⌐ ∩ó½∩ÑΓß∩
- τáßΓ∞ε í¿í½¿«ΓѬ¿ óαѼѡ¿ óδ»«½¡Ñ¡¿∩ Turbo Pascal). Ä¡ ñÑΓá½∞¡«
- «»¿ßá¡ ó ß½ÑñπεΘѼ αáºñѽÑ.
-
-
- î«¡¿Γ«α ¬πτ¿.
-
- èπτá ¿¼ÑÑΓ ßΓѬ«óπε ßΓαπ¬Γπαπ, αáßΓπΘπε «Γ ¡¿ª¡¿σ áñαÑß«ó
- »á¼∩Γ¿ ó ßÑú¼Ñ¡ΓÑ ¬πτ¿. 쿪¡∩∩ úαá¡¿µá ¬πτ¿ σαá¡¿Γß∩ ó »ÑαѼѡ¡«⌐
- HeapOrg, á óÑαΦ¿¡á ¬πτ¿, ß««ΓóÑΓßΓóπεΘá∩ ¡¿ª¡Ñ⌐ úαá¡¿µÑ ßó«í«ñ¡«⌐
- »á¼∩Γ¿, σαá¡¿Γß∩ ó »ÑαѼѡ¡«⌐ HeapPtr. èáªñδ⌐ αáº, ¬«úñá
- ñ¿¡á¼¿τÑ߬á∩ »ÑαѼѡ¡á∩ αáß»αÑñѽ∩ÑΓß∩ ó ¬πτÑ (τÑαѺ New ¿½¿
- GetMem), ¼«¡¿Γ«α ¬πτ¿ »ÑαÑñó¿úáÑΓ HeapPtr óóÑασ ¡á αẼÑα φΓ«⌐
- »ÑαѼѡ¡«⌐, ßΓáó∩ ñ¿¡á¼¿τÑ߬¿Ñ »ÑαѼѡ¡δÑ «ñ¡π ºá ñαπú«⌐.
- HeapPtr ¡«α¼á½¿ºπÑΓß∩ »«ß½Ñ ¬áªñ«⌐ «»Ñαᵿ¿, πßΓá¡áó½¿óá∩
- ß¼ÑΘÑ¡¿Ñ ó ñ¿á»áº«¡Ñ «Γ $0000 ñ« $000F. îá¬ß¿¼á½∞¡δ⌐ αẼÑα
- »ÑαѼѡ¡«⌐, ¬«Γ«αδ⌐ ¼«ªÑΓ íδΓ∞ αáß»αÑñѽѡ ó ¬πτÑ, αáóÑ¡ 65519 íá⌐Γ
- ($10000 - $000F), »«ß¬«½∞¬π ¬áªñá∩ »ÑαѼѡ¡á∩ ñ«½ª¡á »«½¡«ßΓ∞ε
- ¡áσ«ñ¿Γ∞ß∩ ó «ñ¡«¼ ßÑú¼Ñ¡ΓÑ.
-
-
- Äßó«í«ªñÑ¡¿Ñ »á¼∩Γ¿.
-
- 信ἿτÑ߬¿Ñ »ÑαѼѡ¡δÑ, σαá¡∩Θ¿Ñß∩ ó ¬πτÑ, πñá½∩εΓß∩ «ñ¡¿¼ ¿º
- ñóπσ »πΓÑ⌐: (1) τÑαѺ Dispose ¿½¿ FreeMem (2) τÑαѺ Mark ¿ Release.
- Åα«ßΓÑ⌐Φ¿⌐ ß»«ß«í - φΓ« ß Mark ¿ Release, Ñß½¿ í뫨 óδ»«½¡Ñ¡δ
- ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ:
-
- New(Ptr1);
- New(Ptr2);
- Mark(P);
- New(Ptr3);
- New(Ptr4);
- New(Ptr5);
-
- ß«ßΓ«∩¡¿Ñ ¬πτ¿ íπñÑΓ Γᬿ¼, ¬á¬ ¡á α¿ßπ¡¬Ñ 16.2
-
- É¿ß.16.2: Äßó«í«ªñÑ¡¿Ñ »á¼∩Γ¿ ß »«¼«Θ∞ε Mark ¿ Release.
-
-
- Ptr1 ──÷┌──────────────────────────┐ 쿪¡∩∩ úαá¡¿µá »á¼∩Γ¿
- │ ß«ñÑন¼«Ñ Ptr1^ │
- Ptr2 ──÷├──────────────────────────┤
- │ ß«ñÑন¼«Ñ Ptr2^ │
- Ptr3 ──÷├──────────────────────────┤
- │ ß«ñÑন¼«Ñ Ptr3^ │
- Ptr4 ──÷├──────────────────────────┤
- │ ß«ñÑন¼«Ñ Ptr4^ │
- Ptr5 ──÷├──────────────────────────┤
- │ ß«ñÑন¼«Ñ Ptr5^ │
- HeapPtr ──÷├──────────────────────────┤
- │ │ éÑασ¡∩∩ úαá¡¿µá
- HeapEnd ──÷└──────────────────────────┘ »á¼∩Γ¿
-
-
- Ä»ÑαáΓ«α Mark(P) »«¼ÑτáÑΓ ß«ßΓ«∩¡¿Ñ ¬πτ¿ »ÑαÑñ αáß»αÑñѽѡ¿Ñ¼
- Ptr3 (ß«σαá¡Ñ¡¿Ñ¼ ΓѬπΘÑú« HeapPtr ó P). àß½¿ óδ»«½¡¿Γ∞ «»ÑαáΓ«α
- Release(P), Γ« ß«ßΓ«∩¡¿Ñ ¬πτ¿ ßΓá¡ÑΓ ¬á¬ ¡á α¿ßπ¡¬Ñ 16.3,
- φΣΣÑ¬Γ¿ó¡« «ßó«í«ªñá∩ óßÑ π¬áºáΓѽ¿, αáß»αÑñѽѡ¡δÑ »«ß½Ñ ó맮óá
- Mark.
-
- É¿ß.16.3. Éáß»αÑñѽѡ¿Ñ ¬πτ¿ »«ß½Ñ óδ»«½¡Ñ¡¿∩ Release(P).
-
-
- Ptr1 ──÷┌────────────────────────────┐ 쿪¡∩∩ úαá¡¿µá »á¼∩Γ¿
- │ ß«ñÑন¼«Ñ Ptr1^ │
- Ptr2 ──÷├────────────────────────────┤
- │ ß«ñÑন¼«Ñ Ptr2^ │
- HeapPtr ──÷├────────────────────────────┤
- │ │
- │ │
- │ │ éÑασ¡∩∩ úαá¡¿µá
- HeapEnd ──÷└────────────────────────────┘ »á¼∩Γ¿
-
-
- Åα¿¼Ñτá¡¿Ñ: éδ»«½¡Ñ¡¿Ñ «»ÑαáΓ«αá Release(HeapOrg) »«½¡«ßΓ∞ε
- «τ¿ΘáÑΓ óßε ¬πτπ, »«ß¬«½∞¬π HeapOrg π¬áºδóáÑΓ ¡á ¡¿ª¡εε úαá¡¿µπ
- ¬πτ¿.
- ä½∩ »α«úαá¼¼, ¬«Γ«αδÑ «ßó«í«ªñáεΓ π¬áºáΓѽ¿ ó »«α∩ñ¬Ñ, Γ«τ¡«
- «íαáΓ¡«¼ »«α∩ñ¬π ¿σ αáß»αÑñѽѡ¿∩, »α«µÑñπαδ Mark ¿ Release «τÑ¡∞
- φΣΣÑ¬Γ¿ó¡δ. Äñ¡á¬« í«½∞Φ¿¡ßΓó« »α«úαá¼¼ αáß»αÑñѽ∩εΓ ¿ «ßó«í«ªñáεΓ
- π¬áºáΓѽ¿ ß½πτá⌐¡δ¼ «íαẫ¼, τΓ« ΓαÑíπÑΓ í«½ÑÑ ß½«ª¡«⌐ ΓÑσ¡¿¬¿
- π»αáó½Ñ¡¿∩, τΓ« ¿ αÑ὿ºπÑΓß∩ »α«µÑñπαἿ Dispose ¿ FreeMem. ¥Γ¿
- »α«µÑñπαδ »«ºó«½∩εΓ »α«úαá¼¼Ñ «ßó«í«ªñáΓ∞ ½εí«⌐ π¬áºáΓѽ∞ ó ½εí«Ñ
- óαѼ∩.
- è«úñá ñ¿¡á¼¿τÑ߬á∩ »ÑαѼѡ¡á∩, ¬«Γ«αá∩ ¡Ñ ∩ó½∩ÑΓß∩ »«ß½Ññ¡Ñ⌐
- (óÑασ¡Ñ⌐) ó ¬πτÑ, «ßó«í«ªñáÑΓß∩ ß »«¼«Θ∞ε Dispose ¿½¿ FreeMem, ¬πτá
- ßΓá¡«ó¿Γß∩ Σαáú¼Ñ¡Γ¿α«óá¡¡«⌐. àß½¿ íδ½á óδ»«½¡Ñ¡á Γá ªÑ
- »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ «»ÑαáΓ«α«ó, á ºáΓѼ Dispose(Ptr3) - ó ßÑαÑñ¿¡Ñ
- ¬πτ¿ »«∩ó¿Γß∩ ñδα¬á (α¿ß 16.4).
-
-
- É¿ß.16.4. "äδα¬á" ó ¬πτÑ.
-
-
- Ptr1 ──÷┌────────────────────────────┐ 쿪¡∩∩ úαá¡¿µá »á¼∩Γ¿
- │ ß«ñÑন¼«Ñ Ptr1^ │
- Ptr2 ──÷├────────────────────────────┤
- │ ß«ñÑন¼«Ñ Ptr2^ │
- ├────────────────────────────┤
- │ │
- Ptr4 ──÷├────────────────────────────┤
- │ ß«ñÑন¼«Ñ Ptr4^ │
- Ptr5 ──÷├────────────────────────────┤
- │ ß«ñÑন¼«Ñ Ptr5^ │
- HeapPtr ──÷├────────────────────────────┤
- │ │ éÑασ¡∩∩ úαá¡¿µá
- HeapEnd ──÷└────────────────────────────┘ »á¼∩Γ¿
-
-
- àß½¿ ßÑ⌐τáß óδ»«½¡¿Γ∞ New(Ptr3), Γ« «¡ ß¡«óá ºá⌐¼ÑΓ Γπ ªÑ
- «í½áßΓ∞ »á¼∩Γ¿. æ ñαπú«⌐ ßΓ«α«¡δ, óδ»«½¡Ñ¡¿Ñ Dispose(Ptr4) πóѽ¿τ¿Γ
- ßó«í«ñ¡δ⌐ í½«¬, »«ß¬«½∞¬π Ptr3 ¿ Ptr4 í뫨 ß«ßÑñ¡¿¼¿ í½«¬á¼¿ (α¿ß
- 16.5).
-
- É¿ß.16.5. ôóѽ¿τÑ¡¿Ñ ßó«í«ñ¡«ú« í½«¬á.
-
-
- Ptr1 ──÷┌────────────────────────────┐ 쿪¡∩∩ úαá¡¿µá »á¼∩Γ¿
- │ ß«ñÑন¼«Ñ Ptr1^ │
- Ptr2 ──÷├────────────────────────────┤
- │ ß«ñÑন¼«Ñ Ptr2^ │
- ├────────────────────────────┤
- │ │
- │ │
- │ │
- Ptr5 ──÷├────────────────────────────┤
- │ ß«ñÑন¼«Ñ Ptr5^ │
- HeapPtr ──÷├────────────────────────────┤
- │ │ éÑασ¡∩∩ úαá¡¿µá
- HeapEnd ──÷└────────────────────────────┘ »á¼∩Γ¿
-
-
- ìᬫ¡Ñµ, óδ»«½¡Ñ¡¿Ñ Dispose(Ptr5) ó«-»Ñαóδσ ß«ºñáßΓ ÑΘÑ
- í«½∞Φ¿⌐ ßó«í«ñ¡δ⌐ í½«¬, á ºáΓѼ »ÑαѼÑßΓ¿Γ HeapPtr 󡿺. èα«¼Ñ
- Γ«ú«, φëà ßó«í«ñ¡δ⌐ í½«¬ ß«½∞ÑΓß∩ ß« ßó«í«ñ¡«⌐ »á¼∩Γ∞ε ¬πτ¿, Γá¬
- ¬á¬ »«ß½Ññ¡¿⌐ º¡áτáΘ¿⌐ π¬áºáΓѽ∞ ßÑ⌐τáß - Ptr2 (α¿ßπ¡«¬ 16.6).
-
- É¿ß.16.6. ôñá½Ñ¡¿Ñ ßó«í«ñ¡«ú« í½«¬á.
-
- Ptr1 ──÷┌────────────────────────────┐ 쿪¡∩∩ úαá¡¿µá »á¼∩Γ¿
- │ ß«ñÑন¼«Ñ Ptr1^ │
- Ptr2 ──÷├────────────────────────────┤
- │ ß«ñÑন¼«Ñ Ptr2^ │
- HeapPtr ──÷├────────────────────────────┤
- │ │
- │ │
- │ │
- │ │ éÑασ¡∩∩ úαá¡¿µá
- HeapEnd ──÷└────────────────────────────┘ »á¼∩Γ¿
-
-
- èπτá ßÑ⌐τáß ó Γᬫ¼ ªÑ ß«ßΓ«∩¡¿¿, ¬á¬ íδ½á »«ß½Ñ óδ»«½¡Ñ¡¿∩
- Release(P) (α¿ß.16.2). Äñ¡á¬«, ßó«í«ñ¡δÑ í½«¬¿, ß«ºñáóáѼδÑ ¿
- αáºαπΦáѼδÑ ó φΓ«¼ αѪ¿¼Ñ, Σ¿¬ß¿α«ó὿ß∞ ñ½∩ »«ß½ÑñπεΘÑú«
- ¿ß»«½∞º«óá¡¿∩.
-
-
- 滿߫¬ ßó«í«ñ¡δσ í½«¬«ó.
-
- ÇñαÑßá ¿ αẼÑαδ ßó«í«ñ¡δσ í½«¬«ó, ß«ºñáóáѼδσ Dispose ¿
- FreeMem σαá¡∩Γß∩ ó ß»¿ß¬Ñ ßó«í«ñ¡δσ í½«¬«ó, ¬«Γ«αδ⌐ αáßΓÑΓ ßóÑασπ
- 󡿺 «Γ óÑασ¡Ñ⌐ úαá¡¿µδ ßÑú¼Ñ¡Γá ¬πτ¿. è«úñá αáß»αÑñѽ∩ÑΓß∩
- ñ¿¡á¼¿τÑ߬á∩ »ÑαѼѡ¡á∩, ñ« αẼÑΘÑ¡¿∩ ÑÑ ó ¬πτÑ »α«óÑα∩ÑΓß∩ ß»¿ß«¬
- ßó«í«ñ¡δσ í½«¬«ó. àß½¿ ÑßΓ∞ ßó«í«ñ¡δ⌐ í½«¬ »«ñσ«ñ∩ΘÑú« αẼÑαá
- (αẼÑα í«½∞ΦÑ ¿½¿ αáóÑ¡ αẼÑαπ αáß»αÑñѽ∩Ѽ«ú« í½«¬á), Γ« «¡
- ¿ß»«½∞ºπÑΓß∩.
- Åα¿¼Ñτá¡¿Ñ: Åα«µÑñπαá Release óßÑúñá «τ¿ΘáÑΓ ß»¿ß«¬ ßó«í«ñ¡δσ
- í½«¬«ó, τΓ« ºáßΓáó½∩ÑΓ ¼«¡¿Γ«α ¬πτ¿ "ºáíδΓ∞" « óßÑσ ßó«í«ñ¡δσ
- í½«¬áσ, ¬«Γ«αδÑ ¼«ú½¿ íδΓ∞ ¡¿ªÑ π¬áºáΓѽ∩ ¬πτ¿. àß½¿ éδ ß¼ÑΦ¿óáÑΓÑ
- ó맮óδ Mark ¿ Release ß ó맮óἿ Dispose ¿ FreeMem, Γ« éδ ñ«½ª¡δ
- íδΓ∞ πóÑαÑ¡δ, τΓ« Γᬿσ ßó«í«ñ¡δσ í½«¬«ó ¡Ñ ßπΘÑßΓóπÑΓ.
- ÅÑαѼѡ¡á∩ FreeList ¿º ¼«ñπ½∩ System π¬áºδóáÑΓ ¡á »Ñαóδ⌐
- ßó«í«ñ¡δ⌐ í½«¬ ó ¬πτÑ. ¥Γ«Γ í½«¬ ß«ñÑαª¿Γ π¬áºáΓѽ∞ ¡á ß½ÑñπεΘ¿⌐
- ßó«í«ñ¡δ⌐ í½«¬, ¬«Γ«αδ⌐ ß«ñÑαª¿Γ π¬áºáΓѽ∞ ¡á ß½ÑñπεΘ¿⌐ ßó«í«ñ¡δ⌐
- í½«¬ ¿ Γ.ñ. ū߽Ññ¡¿⌐ ßó«í«ñ¡δ⌐ í½«¬ ß«ñÑαª¿Γ π¬áºáΓѽ∞ ¡á óÑαΦ¿¡π
- ¬πτ¿ (Γ.Ñ. ¡á »«½«ªÑ¡¿Ñ, π¬áºδóáѼ«Ñ HeapPtr). àß½¿ ó ß»¿ß¬Ñ
- ßó«í«ñ¡δ⌐ í½«¬«ó ¡ÑΓ ßó«í«ñ¡δσ í½«¬«ó, FreeList αáó¡á HeapPtr.
- ö«α¼áΓ »Ñαóδσ 8 íá⌐Γ ßó«í«ñ¡«ú« í½«¬á «»αÑñѽ∩ÑΓß∩ Γ¿»«¼
- TFreeRec:
-
- type
- PFreeRec = ^TFreeRec;
- TFreeRec = record
- Next : PFreeRec;
- Size : Pointer;
- end;
-
- Å«½Ñ Next π¬áºδóáÑΓ ¡á ß½ÑñπεΘ¿⌐ ßó«í«ñ¡δ⌐ í½«¬, ¿½¿ ¡á Γ« ªÑ
- »«½«ªÑ¡¿Ñ, τΓ« ¿ HeapPtr, Ñß½¿ í½«¬ - »«ß½Ññ¡¿⌐ ßó«í«ñ¡δ⌐ í½«¬.
- Å«½Ñ Size σαá¡¿Γ αẼÑα ßó«í«ñ¡«ú« í½«¬á. ç¡áτÑ¡¿Ñ Size ¡Ñ «íδτ¡«Ñ
- 32-í¿Γ«ó«Ñ º¡áτÑ¡¿Ñ; ߬«αÑÑ φΓ« ¡«α¼á½¿º«óá¡¡«Ñ º¡áτÑ¡¿Ñ π¬áºáΓѽ∩
- ß τ¿ß½«¼ ßó«í«ñ¡δσ »áαáúαáΣ«ó (16-íá⌐Γ«óδσ í½«¬«ó) ó ßΓáαΦѼ ß½«óÑ
- ¿ τ¿ß½«¼ ßó«í«ñ¡δσ íá⌐Γ («Γ 0 ñ« 15) ó ¼½áñΦѼ ß½«óÑ. æ½ÑñπεΘá∩
- Σπ¡¬µ¿∩ BlockSize »αÑ«íαáºπÑΓ º¡áτÑ¡¿Ñ »«½∩ Size ó ¡«α¼á½∞¡«Ñ
- º¡áτÑ¡¿Ñ LongInt:
-
- function BlockSize(Size: Pointer): Longint;
- type
- PtrRec = record Lo, Hi: Word; end;
- begin
- BlockSize := Longint(PtrRec(Size).Hi) * 16 +
- PtrRec(Size).Lo;
- end;
-
- ùΓ«íδ úáαá¡Γ¿α«óáΓ∞, τΓ« óßÑúñá íπñÑΓ ¼ÑßΓ« ñ½∩ TFreeRec ó
- ¡áτá½Ñ ßó«í«ñ¡«ú« í½«¬á, ¼«¡¿Γ«α ¬πτ¿ «¬απú½∩ÑΓ αẼÑα èÇåäÄâÄ
- í½«¬á, αáß»αÑñѽ∩Ѽ«ú« New ¿½¿ GetMem ñ« 8-íá⌐Γ«ó«⌐ úαá¡¿µδ. Æá¬
- ñ½∩ í½«¬«ó, αẼÑα«¼ ó 1..8 íá⌐Γ αáß»αÑñѽ∩ÑΓß∩ 8 íá⌐Γ, ñ½∩ í½«¬«ó,
- αẼÑα«¼ 9..16 αáß»αÑñѽ∩ÑΓß∩ 16 íá⌐Γ ¿ Γ.ñ. ¥Γ« ¼«ªÑΓ »«¬áºáΓ∞ß∩
- αáßΓ«τ¿Γѽ∞¡δ¼ ¿ß»«½∞º«ó᡿Ѽ »á¼∩Γ¿ ¿ ó ñÑ⌐ßΓó¿Γѽ∞¡«ßΓ¿ íπñÑΓ
- Γᬿ¼, Ñß½¿ ¬áªñδ⌐ í½«¬ íπñÑΓ αẼÑα«¼ ó 1 íá⌐Γ. Äñ¡á¬«, «íδτ¡«
- í½«¬¿ ¿¼ÑεΓ í«½∞Φ¿⌐ αẼÑα ¿ «Γ¡«ß¿Γѽ∞¡δ⌐ αẼÑα ¡Ñ¿ß»«½∞ºπѼ«ú«
- »α«ßΓαá¡ßΓóá ¡Ñóѽ¿¬. ü«½ÑÑ Γ«ú«, ¿ φΓ« «τÑ¡∞ ó᪡«,
- 8-íá⌐Γ¡δ⌐ ¬«φΣΣ¿µ¿Ñ¡Γ úαá¡π½¿α«óá¡¡«ßΓ¿ úáαá¡Γ¿απÑΓ, τΓ«
- αáß»αÑñѽѡ¿Ñ ¿ «ßó«í«ªñÑ¡¿Ñ ß½πτá⌐¡δσ í½«¬«ó ¡Ñí«½∞Φ¿σ αẼÑα«ó,
- ¬á¬ ¡á»α¿¼Ñα ñ½∩ ßΓ᫬ ß »ÑαѼѡ¡«⌐ ñ½¿¡«⌐ ó »α«úαá¼¼áσ «íαáí«Γ¬¿
- ΓѬßΓá, ¡Ñ íπñÑΓ ß¿½∞¡« Σαáú¼Ñ¡Γ¿α«óáΓ∞ ¬πτπ. ìá»α¿¼Ñα, ñ«»πßΓ¿¼ 50
- -íá⌐Γ¡δ⌐ í½«¬ αáß»αÑñѽ∩ÑΓß∩ ¿ «ßó«í«ªñáÑΓß∩, ßΓá¡«ó∩ß∞ φ½Ñ¼Ñ¡Γ«¼ ó
- ß»¿ß¬Ñ ßó«í«ñ¡δσ í½«¬«ó. ¥Γ«Γ í½«¬ íπñÑΓ «¬απú½Ñ¡ ñ« 56 íá⌐Γ (7*8)
- ¿ »«ß½ÑñπεΘ¿⌐ ºá»α«ß ¡á αáß»αÑñѽѡ¿Ñ «Γ 49 ñ« 56 íá⌐Γ íπñÑΓ
- »«½¡«ßΓ∞ε ¿ß»«½∞º«óáΓ∞ φΓ«Γ í½«¬, ¡Ñ «ßΓáó½∩∩ «Γ 1 ñ« 7 íá⌐Γ
- ßó«í«ñ¡δ¼¿, ¬«Γ«αδÑ íπñπΓ Σαáú¼Ñ¡Γ¿α«óáΓ∞ ¬πτπ.
-
-
- ÅÑαѼѡ¡á∩ HeapError.
-
- ÅÑαѼѡ¡á∩ HeapError »«ºó«½∩ÑΓ óá¼ πßΓá¡«ó¿Γ∞ Σπ¡¬µ¿ε
- «íαáí«Γ¬¿ «Φ¿í«¬ ¬πτ¿, ¬«Γ«αá∩ óδºδóáÑΓß∩, ¬«úñá ¼«¡¿Γ«α ¬πτ¿ ¡Ñ
- ¼«ªÑΓ «íαáí«ΓáΓ∞ ºá»α«ß ¡á αáß»αÑñѽѡ¿Ñ »á¼∩Γ¿. HeapError
- π¬áºδóáÑΓ ¡á Σπ¡¬µ¿ε ß« ß½ÑñπεΘ¿¼ ºáú«½«ó¬«¼:
-
- function HeapFunc(Size: Word): Integer; far;
-
- çá¼ÑΓ¿¼, τΓ« ñ¿αÑ¬Γ¿óá ¬«¼»¿½∩Γ«αá far πßΓá¡áó½¿óáÑΓ ñá½∞¡εε
- ¼«ñѽ∞ ó맮óá ñ½∩ Σπ¡¬µ¿¿ «íαáí«Γ¬¿ «Φ¿í«¬.
- öπ¡¬µ¿∩ «íαáí«Γ¬¿ πßΓá¡áó½¿óáÑΓß∩ »α¿ßóá¿ó᡿Ѽ ÑÑ áñαÑßá
- »ÑαѼѡ¡«⌐ HeapError:
-
- HeapError := @HeapFunc;
-
- öπ¡¬µ¿∩ «íαáí«Γ¬¿ «Φ¿í«¬ ¬πτ¿ óδºδóáÑΓß∩, ¬«úñá New ¿½¿ GetMem
- ¡Ñ ¼«úπΓ «íαáí«ΓáΓ∞ ºá»α«ß. Åáαá¼ÑΓα Size ß«ñÑαª¿Γ αẼÑα í½«¬á,
- ¬«Γ«αδ⌐ ¡Ñ ¼«ú íδΓ∞ αáß»αÑñѽѡ ¿ Σπ¡¬µ¿∩ «íαáí«Γ¬¿ ñ«½ª¡á
- »«»δΓáΓ∞ß∩ «ßó«í«ñ¿Γ∞ í½«¬ αẼÑα«¼ ¡Ñ ¼Ñ¡∞Φ¿¼ φΓ«ú«.
- é ºáó¿ß¿¼«ßΓ¿ «Γ αѺπ½∞ΓáΓá, Σπ¡¬µ¿∩ «íαáí«Γ¬¿ ó«ºóαáΘáÑΓ 0, 1
- ¿½¿ 2. é ß½πτáÑ 0 íπñÑΓ ¡Ñ¼Ññ½Ñ¡¡« 󫺡¿¬áΓ∞ «Φ¿í¬á óαѼѡ¿
- óδ»«½¡Ñ¡¿∩ ó »α«úαá¼¼Ñ. é ß½πτáÑ 1 ó¼ÑßΓ« áóáα¿⌐¡«ú« ºáóÑαΦÑ¡¿∩
- »α«úαá¼¼δ New ¿½¿ GetMem ó«ºóαáΘáεΓ π¬áºáΓѽ∞, αáó¡δ⌐ Nil. ìᬫ¡Ñµ,
- 2 «º¡áτáÑΓ πß»Ñσ ¿ »«óΓ«α∩ÑΓ ºá»α«ß ¡á αáß»αÑñѽѡ¿Ñ »á¼∩Γ¿
- (¬«Γ«αδ⌐ ¼«ªÑΓ «»∩Γ∞ óδºóáΓ∞ Σπ¡¬µ¿ε «íαáí«Γ¬¿ «Φ¿í«¬).
- æΓá¡ñáαΓ¡á∩ Σπ¡¬µ¿∩ «íαáí«Γ¬¿ «Φ¿í«¬ ¬πτ¿ óßÑúñá ó«ºóαáΘáÑΓ 0,
- τΓ« »α¿ó«ñ¿Γ ¬ áóáα¿⌐¡«¼π ºáóÑαΦÑ¡¿ε »α«úαá¼¼δ, Ñß½¿ New ¿½¿ GetMem
- ¡Ñ ¼«úπΓ íδΓ∞ óδ»«½¡Ñ¡δ. ä½∩ ¼¡«ú¿σ »α«úαá¼¼ íπñÑΓ πñ«í¡á ß½ÑñπεΘá∩
- Σπ¡¬µ¿∩ «íαáí«Γ¬¿ «Φ¿í«¬:
-
- function HeapFunc(Size: Word): Integer; far;
- begin
- HeapFunc := 1;
- end;
-
- è«úñá φΓá Σπ¡¬µ¿∩ πßΓá¡«ó½Ñ¡á, New ¿ GetMem íπñπΓ ó«ºóαáΘáΓ∞
- nil »α¿ ¡Ñ󫺼«ª¡«ßΓ¿ αáß»αÑñѽ¿Γ∞ »á¼∩Γ∞, ¡Ñ »α¿ó«ñ∩ ¬ áóáα¿⌐¡«¼π
- ºáóÑαΦÑ¡¿ε »α«úαá¼¼δ.
-
- Åα¿¼Ñτá¡¿Ñ: é맮ó Σπ¡¬µ¿¿ «íαáí«Γ¬¿ «Φ¿í«¬ ¬πτ¿ ß »áαá¼ÑΓα«¼
- Size = 0 π¬áºδóáÑΓ, τΓ« ñ½∩ πñ«ó½ÑΓó«αÑ¡¿∩ ºá»α«ßá ¡á αáß»αÑñѽѡ¿Ñ
- ¼«¡¿Γ«α ¬πτ¿ αáßΦ¿α¿½ ¬πτπ, »ÑαÑñó¿úá∩ HeapPtr óóÑασ. ¥Γ«
- »α«¿ßσ«ñ¿Γ, ¬«úñá ¡ÑΓ ßó«í«ñ¡δσ í½«¬«ó ó ß»¿ß¬Ñ ßó«í«ñ¡δσ í½«¬«ó,
- ¿½¿ ¬«úñá óßÑ ßó«í«ñ¡δÑ í½«¬¿ ß½¿Φ¬«¼ ¼á½δ ñ½∩ ºá»α«ßá ¡á
- αáß»αÑñѽѡ¿Ñ. é맮ó ß Size = 0 ¡Ñ π¬áºδóáÑΓ ¡á «Φ¿í¬π, »«ß¬«½∞¬π
- ßπΘÑßΓóπÑΓ ñ«ßΓáΓ«τ¡«Ñ ¼ÑßΓ« ñ½∩ αáß»αÑñѽѡ¿∩ ¼Ñªñπ HeapPtr ¿
- HeapEnd. 欫αÑÑ φΓ« π¬áºδóáÑΓ, τΓ« ¡Ñ¿ß»«½∞º«óá¡¡«Ñ »α«ßΓαá¡ßΓó«
- HeapPtr í佫 π¼Ñ¡∞ΦÑ¡« ¿ ¼«¡¿Γ«α ¬πτ¿ ¿ú¡«α¿απÑΓ ó«ºóαáΘáѼ«Ñ
- º¡áτÑ¡¿Ñ «Γ ó맮ó«ó φΓ«ú« Γ¿»á.
-
-
- é¡πΓαÑ¡¡¿Ñ Σ«α¼áΓδ ñá¡¡δσ.
-
- ûѽδÑ Γ¿»δ.
-
- ö«α¼áΓ, ¿ß»«½∞ºπѼδ⌐ ñ½∩ »αÑñßΓáó½Ñ¡¿∩ µÑ½δσ τ¿ßѽ, ºáó¿ß¿Γ «Γ
- ¿σ ¼¿¡¿¼á½∞¡«⌐ ¿ ¼á¬ß¿¼á½∞¡«⌐ úαá¡¿µ:
-
- - úαá¡¿µá ó ñ¿á»áº«¡Ñ -128 .. 127 (Shortint) - »ÑαѼѡ¡á∩
- σαá¡¿Γß∩ ¬á¬ º¡á¬«óδ⌐ íá⌐Γ.
-
- - úαá¡¿µá ó ñ¿á»áº«¡Ñ 0 .. 255 (Byte) - »ÑαѼѡ¡á∩ σαá¡¿Γß∩
- ¬á¬ íѺº¡á¬«óδ⌐ íá⌐Γ.
-
- - úαá¡¿µá ó ñ¿á»áº«¡Ñ -32768 .. 32767 (Integer) - »ÑαѼѡ¡á∩
- σαá¡¿Γß∩ ¬á¬ º¡á¬«ó«Ñ ß½«ó«.
-
- - úαá¡¿µá ó ñ¿á»áº«¡Ñ 0 .. 65535 (Word) - »ÑαѼѡ¡á∩ σαá¡¿Γß∩
- ¬á¬ íѺº¡á¬«ó«Ñ ß½«ó«.
-
- - ó ñαπú¿σ ß½πτá∩σ »ÑαѼѡ¡á∩ σαá¡¿Γß∩ ¬á¬ º¡á¬«ó«Ñ ñó«⌐¡«Ñ
- ß½«ó« (Longint).
-
-
- 濼ó«½∞¡δ⌐ Γ¿».
-
- Æ¿» Char ¿½¿ »«ññ¿á»áº«¡ Γ¿»á Char σαá¡¿Γß∩ ¬á¬ íѺº¡á¬«óδ⌐
- íá⌐Γ.
-
- ï«ú¿τÑ߬¿⌐ Γ¿».
-
- Æ¿» éoolean σαá¡¿Γß∩ ¬á¬ íá⌐Γ ¿ »α¿¡¿¼áÑΓ º¡áτÑ¡¿∩ 0 (False)
- ¿½¿ 1 (True).
-
-
- ÅÑαÑτ¿ß½¿¼δÑ Γ¿»δ.
-
- ÅÑαÑτ¿ß½¿¼δ⌐ Γ¿» σαá¡¿Γß∩ ó íѺº¡á¬«ó«¼ íá⌐ΓÑ, Ñß½¿
- »ÑαÑτ¿ß½Ñ¡¿Ñ ¿¼ÑÑΓ 256 ¿½¿ ¼Ñ¡∞ΦÑ º¡áτÑ¡¿⌐, ó »α«Γ¿ó¡«¼ ß½πτáÑ «¡
- σαá¡¿Γß∩ ¬á¬ íѺº¡á¬«ó«Ñ ß½«ó«.
-
-
- éÑΘÑßΓóÑ¡¡δÑ Γ¿»δ.
-
- éÑΘÑßΓóÑ¡¡δÑ Γ¿»δ (Real, Single, Double, Extended ¿ Comp)
- σαá¡∩Γ ñó«¿τ¡«Ñ »αÑñßΓáó½Ñ¡¿Ñ º¡á¬á (+/-), φ¬ß»«¡Ñ¡Γδ ¿ ¼á¡Γ¿ßßδ.
- ÅαÑñßΓáó½Ñ¡¿Ñ τ¿ß½á ¿¼ÑÑΓ ó¿ñ :
-
- +/- ¼á¡Γ¿ßßá σ 2**φ¬ß»«¡Ñ¡Γá
-
- úñÑ ¼á¡Γ¿ßßá ¿¼ÑÑΓ «ñ¿¡ í¿Γ ß½Ñóá «Γ Γ«τ¬¿ ñó«¿τ¡«ú« τ¿ß½á (Γ«
- ÑßΓ∞ 0 <= ¼á¡Γ¿ßßá < 2).
-
- Åα¿¼Ñτá¡¿Ñ: ìá ß½ÑñπεΘѼ α¿ßπ¡¬Ñ msb «º¡áτáÑΓ ¡á¿í«½∞Φ¿⌐
- º¡áτáΘ¿⌐ í¿Γ ¿ lsb «º¡áτáÑΓ ¡á¿¼Ñ¡∞Φ¿⌐. èαá⌐¡Ñ ½ÑóδÑ φ½Ñ¼Ñ¡Γδ
- σαá¡∩Γß∩ ¡á í«½∞Φ¿σ áñαÑßáσ. ìá»α¿¼Ñα, ñ½∩ º¡áτÑ¡¿∩ Γ¿»á Real, Ñ -
- σαá¡¿Γß∩ ó »Ñαó«¼ íá⌐ΓÑ, f - ó ß½ÑñπεΘ¿σ 5 íá⌐Γáσ ¿ s - ó
- ¡á¿í«½∞ΦѼ º¡áτáΘѼ í¿ΓÑ »«ß½Ññ¡Ñú« íá⌐Γá.
-
-
- Æ¿» Real.
-
- 6-Γ¿ íá⌐Γ«óδ⌐ (48-¼¿ í¿Γ«óδ⌐) Γ¿» Real ñѽ¿Γß∩ ¡á Γα¿ »«½∩:
-
- 1 39 8
- ┌───┬──────..───────┬────────┐
- │ s │ f │ e │
- └───┴──────..───────┴────────┘
- msb lsb msb lsb
-
-
- ç¡áτÑ¡¿Ñ τ¿ß½á v «»αÑñѽ∩ÑΓß∩ ¬á¬,
-
- Ñß½¿ 0 < e <= 255, Γ« v = (-1)**s x 2**(e-129) x (1.f).
- Ñß½¿ Ñ = 0, Γ« v = 0.
-
- Åα¿¼Ñτá¡¿Ñ: Æ¿» Real ¡Ñ ¼«ªÑΓ σαá¡¿Γß∩ ñÑ¡«α¼á½¿º«óá¡¡δ¼, NaN
- ¿ ¡Ñ«»αÑñѽѡ¡δ¼. äÑ¡«α¼á½¿º«óá¡¡«Ñ ßΓá¡«ó¿Γß∩ 0, ¬«úñá
- ºá»«¼¿¡áÑΓß∩ ó Real. NaN, ¿ ¡Ñ«»αÑñѽѡ¡«Ñ ñáεΓ «Φ¿í¬π
- »ÑαÑ»«½¡Ñ¡¿∩, »α¿ »«»δ⪥ ºá»«¼¡¿Γ∞ ¿σ ó Real.
-
-
- Æ¿» Single.
-
- 4-σ íá⌐Γ«óδ⌐ (32-σ í¿Γ¡δ⌐) Γ¿» Single ñѽ¿Γß∩ ¡á Γα¿ »«½∩:
-
- 1 8 23
- ┌───┬──────┬───────..─────────┐
- │ s │ e │ f │
- └───┴──────┴───────..─────────┘
- msb lsb msb lsb
-
-
-
- ç¡áτÑ¡¿Ñ τ¿ß½á v «»αÑñѽ∩ÑΓß∩ ¬á¬,
-
- Ñß½¿ 0 < e < 255, Γ« v = (-1)**s x 2**(e-127) x (1.f).
- Ñß½¿ e = 0 ¿ f <> 0, Γ« v = (-1)**s x 2**(-126) x (0.f).
- Ñß½¿ e = 0 ¿ f = 0, Γ« v = (-1)**s x 0
- Ñß½¿ e = 255 ¿ f = 0, Γ« v = (-1)**s x Inf.
- Ñß½¿ e = 255 ¿ f <> 0, Γ« v = NaN.
-
-
- Æ¿» Double.
-
- 8-σ íá⌐Γ«óδ⌐ (64-σ í¿Γ¡δ⌐) Γ¿» Double ñѽ¿Γß∩ ¡á Γα¿ »«½∩:
-
-
- 1 11 52
- ┌───┬──────┬───────..────────┐
- │ s │ e │ f │
- └───┴──────┴───────..────────┘
- msb lsb msb lsb
-
-
- ç¡áτÑ¡¿Ñ τ¿ß½á v «»αÑñѽ∩ÑΓß∩ ¬á¬,
-
- Ñß½¿ 0 < e < 2047, Γ« v = (-1)**s x 2**(e-1023) x (1.f).
- Ñß½¿ e = 0 ¿ f <> 0, Γ« v = (-1)**s x 2**(-1022) x (0.f).
- Ñß½¿ e = 0 ¿ f = 0, Γ« v = (-1)**s x 0
- Ñß½¿ e = 2047 ¿ f = 0, Γ« v = (-1)**s x Inf.
- Ñß½¿ e = 2047 ¿ f <> 0, Γ« v = NaN.
-
-
- Æ¿» Extended.
-
- 10-σ íá⌐Γ«óδ⌐ (80-σ í¿Γ¡δ⌐) Γ¿» Extended ñѽ¿Γß∩ ¡á Γα¿ »«½∩:
-
- 1 15 1 63
- ┌───┬────────┬───┬────────..───────┐
- │ s │ e │ i │ f │
- └───┴────────┴───┴────────..───────┘
- msb lsb msb lsb
-
-
- ç¡áτÑ¡¿Ñ τ¿ß½á v «»αÑñѽ∩ÑΓß∩ ¬á¬,
-
- Ñß½¿ 0 <= e < 32767, Γ« v = (-1)**s x 2**(e-16383) x (1.f).
- Ñß½¿ e = 32767 ¿ f = 0, Γ« v = (-1)**s x Inf.
- Ñß½¿ e = 32767 ¿ f <> 0, Γ« v = NaN.
-
-
- Æ¿» Comp.
-
- 8-σ íá⌐Γ«óδ⌐ (64-σ í¿Γ¡δ⌐) Γ¿» Comp ñѽ¿Γß∩ ¡á ñóá »«½∩:
-
-
- 1 63
- ┌───┬───────────..──────────────┐
- │ s │ d │
- └───┴───────────..──────────────┘
- msb lsb
-
-
- ç¡áτÑ¡¿Ñ τ¿ß½á v «»αÑñѽ∩ÑΓß∩ ¬á¬,
-
- Ñß½¿ s = 1 ¿ d = 0, Γ« v = NaN.
-
- ê¡áτÑ v - ñó«¿τ¡«Ñ ñ«»«½¡Ñ¡¿Ñ 64-í¿Γ¡«ú« º¡áτÑ¡¿∩.
-
-
- Æ¿» Pointer.
-
- Æ¿» Pointer σαá¡¿Γß∩ ¬á¬ ñó«⌐¡«Ñ ß½«ó« ß τáßΓ∞ε ß¼ÑΘÑ¡¿∩ ó
- ¼½áñΦѼ ß½«óÑ ¿ ß ßÑú¼Ñ¡Γ¡«⌐ τáßΓ∞ε ó ßΓáαΦѼ ß½«óÑ. ç¡áτÑ¡¿Ñ
- π¬áºáΓѽ∩ nil σαá¡¿Γß∩ ¬á¬ 0 ó «í«¿σ ß½«óáσ.
-
-
- æΓ᫬«óδ⌐ Γ¿».
-
- 使¡á ßΓ᫬«ó«ú« Γ¿»á ó íá⌐Γáσ αáó¡á Ñú« ¼á¬ß¿¼á½∞¡«⌐ ñ½¿¡Ñ
- »½εß 1. ÅÑαóδ⌐ íá⌐Γ ß«ñÑαª¿Γ ΓѬπΘπε ñ½¿¡π ßΓ᫬¿ ¿ ß½ÑñπεΘ¿Ñ íá⌐Γδ
- ß«ñÑαªáΓ ß¿¼ó«½δ ßΓ᫬¿. üá⌐Γ ñ½¿¡δ ¿ ß¿¼ó«½δ »αÑñßΓáó½Ñ¡δ
- íѺº¡á¬«ó묨 º¡áτÑ¡¿∩¼¿. îá¬ß¿¼á½∞¡á∩ ñ½¿¡á ßΓ᫬¿ 255 ß¿¼ó«½«ó
- »½εß íá⌐Γ ñ½¿¡δ (string[255]).
-
-
- Æ¿» ¼¡«ªÑßΓóá.
-
- î¡«ªÑßΓó« (set) - φΓ« í¿Γ«óδ⌐ ¼áßß¿ó, úñÑ ¬áªñδ⌐ í¿Γ
- »«¬áºδóáÑΓ - ÑßΓ∞ ñá¡¡δ⌐ φ½Ñ¼Ñ¡Γ ó ¼¡«ªÑßΓóÑ ¿½¿ ¡ÑΓ. îá¬ß¿¼á½∞¡«Ñ
- τ¿ß½« φ½Ñ¼Ñ¡Γ«ó ó ¼¡«ªÑßΓóÑ - 256, »«φΓ«¼π ¼¡«ªÑßΓó« ¡¿¬«úñá ¡Ñ
- ºá¡¿¼áÑΓ í«½ÑÑ 32 íá⌐Γ. ù¿ß½« íá⌐Γ ºá¡¿¼áѼδσ ¼¡«ªÑßΓó«¼
- óδτ¿ß½∩ÑΓß∩ ¬á¬ :
-
- ByteSize = (Max div 8) - (Min div 8) + 1
-
- úñÑ Min ¿ Max - ¡¿ª¡∩∩ ¿ óÑασ¡∩∩ úαá¡¿µδ íẫó«ú« Γ¿»á φΓ«ú«
- ¼¡«ªÑßΓóá. ¥½Ñ¼Ñ¡Γ à ºá¡¿¼áÑΓ íá⌐Γ ß ¡«¼Ñα«¼:
-
- ByteNumber = ( E div 8) - (Min div 8)
-
- ¿ »«º¿µ¿∩ í¿Γá ó¡πΓα¿ íá⌐Γá:
-
- BitNumber = E mod 8
-
- úñÑ à »αÑñßΓáó½∩ÑΓ »«α∩ñ¬«ó«Ñ º¡áτÑ¡¿Ñ φ½Ñ¼Ñ¡Γá.
-
-
- Æ¿» ¼áßß¿óá.
-
- îáßß¿ó σαá¡¿Γß∩ ¬á¬ ¡Ñ»αÑαδó¡á∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ »ÑαѼѡ¡δσ
- Γ«ú« Γ¿»á, ¿º ¬«Γ«αδσ «íΩ∩ó½Ñ¡ ¼áßß¿ó. 諼»«¡Ñ¡Γá ß ¡á¿¼Ñ¡∞Φ¿¼
- ¿¡ñѬ߫¼ σαá¡¿Γß∩ »« ¡á¿¼Ñ¡∞ΦѼπ áñαÑßπ »á¼∩Γ¿. î¡«ú«¼Ñα¡δ⌐ ¼áßß¿ó
- σαá¡¿Γß∩ Γá¬, τΓ« ¡á¿í«½ÑÑ »αáóδ⌐ ¿¡ñÑ¬ß πóѽ¿τ¿óáÑΓß∩ »Ñαóδ¼.
-
-
- Æ¿» ºá»¿ß∞.
-
- Å«½∩ ºá»¿ß¿ σαá¡∩Γß∩ ¬á¬ ¡Ñ»αÑαδó¡á∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞
- »ÑαѼѡ¡δσ. ÅÑαó«Ñ »«½Ñ σαá¡¿Γß∩ »« ¡á¿¼Ñ¡∞ΦѼπ áñαÑßπ »á¼∩Γ¿. àß½¿
- ºá»¿ß∞ ß«ñÑαª¿Γ óáα¿á¡Γ¡δÑ τáßΓ¿, Γ« ¬áªñá∩ óáα¿á¡Γ¡á∩ τáßΓ∞
- ¡áτ¿¡áÑΓß∩ ß «ñ¡«ú« ¿ Γ«ú« ªÑ áñαÑßá.
-
-
- öá⌐½«óδ⌐ Γ¿».
-
- öá⌐½«óδ⌐ Γ¿» »αÑñßΓáó½Ñ¡ ¬á¬ ºá»¿ß∞. Æ¿»¿α«óá¡¡δÑ ¿
- ¡ÑΓ¿»¿α«óá¡¡δÑ Σá⌐½δ ºá¡¿¼áεΓ 128 íá⌐Γ ¿ ¿¼ÑεΓ ß½ÑñπεΘπε ßΓαπ¬Γπαπ:
-
- type
- FileRec = record
- Handle: Word;
- Mode: Word;
- RecSize: Word;
- Private: array[1..26] of Byte;
- UserData: array[1..16] of Byte;
- Name: array[0..79] of Char;
- end;
-
- ÆÑ¬ßΓ«óδ⌐ Σá⌐½ ºá¡¿¼áÑΓ 256 íá⌐Γ ¿ ¿¼ÑÑΓ ßΓαπ¬Γπαπ:
-
- type
- TextBuf = array[0..127] of Char;
- TextRec = record
- Handle: Word;
- Mode: Word;
- BufSize: Word;
- Private: Word;
- BufPos: Word;
- BufEnd: Word;
- BufPtr: ^TextBuf;
- OpenFunc: Pointer;
- InOutFunc: Pointer;
- FlushFunc: Pointer;
- CloseFunc: Pointer;
- UserData: array[1..16] of Byte;
- Name: array[0..79] of Char;
- Buffer: TextBuf;
- end;
-
- Hándle ß«ñÑαª¿Γ «íαáí«Γτ¿¬ Σá⌐½á, ó«ºóαáΘáѼδ⌐ ¿º DOS. Å«½Ñ
- Mode ¼«ªÑΓ »α¿¡¿¼áΓ∞ «ñ¡« ¿º º¡áτÑ¡¿⌐:
-
- const
- fmClosed = $D7B0;
- fmInput = $D7B1;
- fmOutput = $D7B2;
- fmInOut = $D7B3;
-
- fmClosed «º¡áτáÑΓ, τΓ« Σá⌐½ ºá¬αδΓ. fmInput «º¡áτáÑΓ, τΓ«
- ΓѬßΓ«óδ⌐ Σá⌐½ íδ½ «Γ¬αδΓ ¬á¬ óσ«ñ¡«⌐ (Reset), fmOutput - ¬á¬
- óδσ«ñ¡«⌐ (Rewrite). fmInOut «º¡áτáÑΓ, τΓ« Σá⌐½«óá∩ »ÑαѼѡ¡á∩
- Γ¿»¿α«óá¡¡«ú« ¿½¿ ¡ÑΓ¿»¿α«óá¡¡«ú« Σá⌐½á íδ½á «Γ¬αδΓá ¡á τΓÑ¡¿Ñ ¿½¿
- ºá»¿ß∞. éßÑ ñαπú¿Ñ º¡áτÑ¡¿∩ «º¡áτáεΓ, τΓ« Σá⌐½«óá∩ »ÑαѼѡ¡á∩ ¡Ñ
- íδ½á ¿¡¿µ¿á½¿º¿α«óá¡á (ß »«¼«Θ∞ε Assign).
- Å«½Ñ UserData ¡¿¬«úñá ¡Ñ ¿ß»«½∞ºπÑΓß∩ Turbo Pascal ¿ ¼«ªÑΓ
- ßó«í«ñ¡« ¿ß»«½∞º«óáΓ∞ß∩ »α«úαá¼¼¿ßΓ«¼.
- Name ß«ñÑαª¿Γ ¿¼∩ Σá⌐½á, ¬«Γ«αδ⌐ »αÑñßΓáó½Ñ¡ ¬á¬
- »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ ß¿¼ó«½«ó, ºáóÑαΦÑ¡¡á∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼ (#0).
- ä½∩ Γ¿»¿α«óá¡¡δσ ¿ ¡ÑΓ¿»¿α«óá¡¡δσ Σá⌐½«ó RecSize ß«ñÑনΓ
- ñ½¿¡π ºá»¿ß¿ ó íá⌐Γáσ, ¿ »«½Ñ Private ¡Ñ ¿ß»«½∞ºπÑΓß∩, ¡«
- ºáαѺÑαó¿α«óá¡«.
- ä½∩ ΓѬßΓ«óδσ Σá⌐½«ó BufPtr - π¬áºáΓѽ∞ ¡á íπΣÑα ñ½¿¡«⌐
- BufSize íá⌐Γ, BufPos - ¿¡ñÑ¬ß ß½ÑñπεΘÑú« ß¿¼ó«½á ó íπΣÑαÑ ñ½∩
- τΓÑ¡¿∩ ¿½¿ ºá»¿ß¿, BufEnd - ¬«½¿τÑßΓó« «ßΓáóΦ¿σß∩ ß¿¼ó«½«ó ó
- íπΣÑαÑ. OpenFunc, InOutFunc, FlushFunc, CloseFunc - π¬áºáΓѽ¿ ¡á
- »α«úαá¼¼δ é/é, π»αáó½∩εΘ¿Ñ Σá⌐½«¼. é αáºñÑ½Ñ "äαá⌐óÑα πßΓα«⌐ßΓóá
- ΓѬßΓ«ó«ú« Σá⌐½á" ú½áóδ 19 φΓ« «»¿ßá¡« í«½ÑÑ »«ñα«í¡«.
-
-
- Åα«µÑñπα¡δ⌐ Γ¿».
-
- Åα«µÑñπα¡δ⌐ Γ¿» σαá¡¿Γß∩ ¬á¬ ñó«⌐¡«Ñ ß½«ó« ß τáßΓ∞ε ß¼ÑΘÑ¡¿∩ ó
- ß½«óÑ ß ¼½áñΦ¿¼ áñαÑß«¼ ¿ ßÑú¼Ñ¡Γ¡«⌐ τáßΓ∞ε ó ß½«óÑ ß í«½∞Φ¿¼
- áñαÑß«¼.
-
-
- Åα∩¼«⌐ ñ«ßΓπ» ¬ »á¼∩Γ¿.
-
- Turbo Pascal αÑ὿ºπÑΓ Γα¿ »αÑñ«»αÑñѽѡ¡δσ ¼áßß¿óá Mem, MemW,
- MemL, ¬«Γ«αδÑ ¿ß»«½∞ºπεΓß∩ ñ½∩ »α∩¼«ú« ñ«ßΓπ»á ¬ »á¼∩Γ¿. èáªñδ⌐
- φ½Ñ¼Ñ¡Γ Mem - «ñ¿¡ íá⌐Γ, ¬áªñδ⌐ φ½Ñ¼Ñ¡Γ MemW - «ñ¡« ß½«ó« ¿ ¬áªñδ⌐
- φ½Ñ¼Ñ¡Γ MemL - ñó«⌐¡«Ñ ß½«ó« (LongInt).
- îáßß¿ó Mem ¿ß»«½∞ºπÑΓ ß»Ñµ¿á½∞¡δ⌐ ß¿¡Γá¬ß¿ß ñ½∩ ¿¡ñѬßá: ñóá
- óδαáªÑ¡¿∩ Γ¿»á ß½«ó«, αáºñѽѡ¡δÑ ñó«ÑΓ«τ¿Ñ¼, ¿ß»«½∞ºπεΓß∩ ñ½∩
- π¬áºá¡¿∩ ßÑú¼Ñ¡Γá ¿ ß¼ÑΘÑ¡¿∩ »á¼∩Γ¿. Åα¿¼Ñαδ:
-
- Mem [$0040: $0049] := 7;
- Data := MemW [Seg(V):Ofs(V)];
- MemLong := MemL[64:3*4];
-
- ÅÑαóδ⌐ «»ÑαáΓ«α ºá»¿ßδóáÑΓ º¡áτÑ¡¿Ñ 7 ó íá⌐Γ $0040:$0049.
- éΓ«α«⌐ «»ÑαáΓ«α »ÑαÑßδ½áÑΓ º¡áτÑ¡¿Ñ Γ¿»á ß½«ó«, ºá»¿ßá¡¡«Ñ ó »Ñαóδσ
- ñóπσ íá⌐Γáσ »ÑαѼѡ¡«⌐ V, ó »ÑαѼѡ¡πε Data. ÆαÑΓ¿⌐ «»ÑαáΓ«α
- »ÑαÑßδ½áÑΓ º¡áτÑ¡¿∩ Γ¿»á Longint, σαá¡∩Θ¿Ñß∩ ó $0040:$000C, ó
- »ÑαѼѡ¡πε MemLong.
-