Rozdφly mezi Speed-Pascalem (SP/2), Borland Pascalem (BP7) a Delphi.


  1. ÄßdnΘ segmenty
  2. Zm∞na d∙le₧itß, v mnoha p°φpadech pozitivnφ. Programy, kterΘ vyu₧φvajφ knihovny funkcφ zalo₧en²ch na principu segment∙, musφ b²t p°epsßny a nßsledn∞ znovu kompilovßny. Seznam neimplementovan²ch funkcφ a procedur najdete zde.

    Co jsou to segmenty?

    Segmenty jsou jednφm ze zp∙sob∙, jak²m operaΦnφ systΘm p°istupuje k pam∞ti. DOS nem∙₧e pracovat s blokem pam∞ti v∞tÜφm ne₧ 64k, co₧ vedlo k r∙zn²m trik∙m, jak vyu₧φvat relativn∞ v∞tÜφ pam∞¥ovΘ bloky.

    ProΦ nejsou implementovßny?

    V OS/2, Windows, a dalÜφch 32-bitov²ch systΘmech neexistujφ.

    PoΦφtß se do budoucna s jejich podporou?

    Doufejme, ₧e ne.

    Co mßm tedy d∞lat?

    V zßsad∞ jsou zde dv∞ otßzky: Co mßm d∞lat s k≤dem, kter² pracuje se segmenty, a co mßm d∞lat, kdy₧ pot°ebuji pracovat se segmenty. V p°φpad∞, ₧e program pracuje se segmenty, mßte mo₧nost tuto skuteΦnost ignorovat. V²sledn² produkt pak bude stßle funkΦnφ, i kdy₧ ne tak rychl² a mal², jako bez segment∙. Pokud segmenty vy₧adujete, lze tΘm∞° stejnΘho efektu dosßhnout alokacφ cel²ch strßnek pam∞ti. OvÜem SP/2 vßm to nijak neusnadnφ, budete muset pou₧φt pat°iΦnΘ funkce p°φsluÜnΘho API.

  3. ÄßdnΘ p°ekryvnΘ moduly
  4. Zm∞na obecn∞ nep°φliÜ velikß.

    Co jsou to p°ekryvnΘ moduly?

    P°ekryvnΘ moduly slou₧φ ke swapovßnφ spustitelnΘho k≤du programu a nßslednΘ redukci tΘ Φßsti RAM, kterou program pro tento k≤d vyu₧φvß.

    ProΦ nejsou implementovßny?

    Speed Pascal/2 je napsßn pro 32-bitovΘ operaΦnφ systΘmy, kterΘ swapujφ k≤d a data podle nutnosti. P°ekryvnΘ moduly jsou pro n∞j n∞Φφm zastaral²m.

    PoΦφtß se do budoucna s jejich podporou?

    Modernφ operaΦnφ systΘmy konajφ dobrou prßci p°i swapovßnφ k≤du a dat a stßle se zlepÜujφ. Zdß se nepravd∞podobnΘ, ₧e by si znaΦnΘ procento v²vojß°∙ komplikovalo ₧ivot p°ekryvn²mi moduly natolik, aby se SpeedSoft touto problematikou zaΦal zab²vat.

    Co mßm tedy d∞lat?

    N∞jak se p°es to p°enΘst. Modernφ p°φstup k problΘm∙m d°φve °eÜen²ch pomocφ p°ekryvn²ch modul∙ je pou₧φvat knihovny DLL p°φpadn∞ systΘmov² objektov² model (SOM). Pro SP/2 nejsou DLL ₧ßdn²m problΘmem, a proto je m∙₧ete kdykoli tvo°it a nßsledn∞ vyu₧φvat. V souΦasnΘ dob∞ se pracuje na podpo°e SOM. Pokud vÜak striktn∞ vy₧adujete p°ekryvnΘ moduly, budete si muset sami vypracovat n∞jak² systΘm pro jejich u₧φvßnφ.

  5. Nekompatibilitia Assembleru
  6. Zm∞na nestßlß, Φasto nevyhnutelnß.

    K Φemu slou₧φ Assembler?

    Programy psanΘ v assembleru jsou p°eklßdßny p°φmo do strojovΘho k≤du, proto jsou rychlejÜφ ne₧ k≤d psan² ve vyÜÜφm programovacφm jazyce.

    ProΦ nejsou SP/2 a Borlandφ assemblery kompatibilnφ?

    16-bitov² k≤d napsan² v assembleru se do 32-bitov²ch operaΦnφch systΘm∙ nep°eklßdß. Ve SpeedSoftu se vφce zajφmajφ o zlepÜovßnφ p°ekladaΦe k produkci v²konn²ch aplikacφ ne₧ o starosti s p°ekladem program∙, kterΘ se zdajφ b²t nep°enositelnΘ.

    Dojde v budoucnu k jejich kompatibilit∞?

    Mo₧nß, vÜe zßle₧φ na poptßvce na trhu.

  7. ÄßdnΘ in-line funkce
  8. N∞kte°φ lidΘ pou₧φvali Pascal ji₧ v dob∞ poΦßtku existence Borlandu ani₧ by kdy psali In-line funkce. Naproti tomu vysoce v²konnΘ nßstroje (jako nap°. Object Professional od TurboPower) je pln∞ vyu₧φvajφ k dosa₧enφ maximßlnφ rychlosti k≤du.

    Co jsou to in-line funkce?

    In-line funkce slou₧φ k p°φmΘmu vklßdßnφ strojovΘho k≤du do textu programu. Zßrove≥ zvyÜujφ rychlost programu.

    ProΦ nejsou implementovßny?

    32-bitovΘ verze Borlandφch Pascal∙ (poΦφnaje Delphi 2.0) je nepodporujφ, nebo¥ jsou st°etem zßjmu kompatibility modernφch aplikacφ. Navφc je nutnΘ vÜechny 16-bitovΘ in-line funkce p°epsat. IBM i SpeedSoft p°φliÜ nesympatizujφ s pou₧φvßnφm Assembleru a in-line funkcφ, proto₧e sni₧ujφ p°enositelnost takto vznikl²ch program∙.

    PoΦφtß se do budoucna s jejich podporou?

    Nenφ nemo₧nΘ, aby p°φÜtφ verze SP/2 obsahovaly in-line funkce, pokud by si znaΦnß Φßst programßtor∙ nadßle st∞₧ovala, ₧e bez nich nem∙₧e ₧φt, p°izp∙sobili bychom se poptßvce. Ale prozatφm se nikdo neozval, ₧e by je v p°edchozφch verzφch postrßdal, tak₧e to vypadß na nekoneΦn² boj.

    Co mßm tedy d∞lat?

    Vzhledem ke zp∞tnΘ kompatibilit∞ mßte jedinou mo₧nost, a to cel² program p°epsat s ohledem na skuteΦnost, ₧e 16-bitov² assembler v SP/2 nenφ podporovßn. K dosa₧enφ vyÜÜφ rychlosti programu mßte n∞kolik mo₧nostφ:

    1. Optimalizujte pat°iΦn² algoritmus.
    2. Pou₧φvejte mΘn∞ API funkce a odkazy na DLL, kterΘ mohou vßÜ k≤d zpomalovat
    3. Ke zrychlenφ vßm m∙₧e pomoci vestav∞n² Assembler

    T°etφ uvedenß metoda pravd∞podobn∞ urychlφ vßÜ k≤d nejvφce, zßrove≥ vÜak v²razn∞ snφ₧φ jeho p°enositelnost. V pvnφm a druhΘm p°φpad∞ bude v²sledek efektivnφ a p°enositeln². Ke snφ₧enφ pot°eby takov²chto ·prav programu se SpeedSoft zavßzal zdokonalit p°ekladaΦ.

  9. Äßdnß p°eruÜenφ
  10. Stejn∞ jenom rozΦilovala.

    Co jsou to p°eruÜenφ?

    P°eruÜenφ se pou₧φvala k p°φmΘmu p°φstupu k jßdru operaΦnφho systΘmu DOS, kter² v∙bec neobsahoval skuteΦnΘ API.

    ProΦ nejsou implementovßny?

    Tato technologie je specifickß pro platformu DOS.

    PoΦφtß se do budoucna s jejich podporou?

    SkuteΦn∞ ne, aΦkoliv teoreticky volßnφ funkce Intr nenφ nemo₧nΘ.

    Co mßm tedy d∞lat?

    Modernφ operaΦnφ systΘmy jsou vybaveny funkcemi API, pomocφ nich₧ dosßhnete stejnΘho v²sledku. Vedle toho m∙₧ete pou₧φvat p°eruÜenφ k psanφ TSR program∙, kterΘ vÜak ve sv∞t∞ OS/2 nebo Win32 nemajφ budoucnost.

  11. ANSI String (a dalÜφ mo₧nosti Delphi 2.0) nejsou podporovßny
  12. Co je to ANSI String?

    ANSI String je p∙vodnφ datov² typ °et∞zce v Delphi. Umo₧≥uje vytvß°et velmi dlouhΘ °et∞zce vysoce kompatibilnφ s typem PChar.

    ProΦ nenφ implementovßn?

    Nebo¥ v samotnΘm Delphi je ANSII String novinkou.

    PoΦφtß se do budoucna s jeho podporou?

    Ano, v p°φÜtφ verzi Speed-Pascalu/2.

    Co mßm tedy d∞lat?

    Smutn∞ koukat. Ne vÜechny mo₧nosti Delphi u₧ byly p°eneseny do SP/2.

  13. KruhovΘ odkazy v jednotkßch nejsou povoleny
  14. Co jsou to kruhovΘ odkazy?

    Kruhov² odkaz vznikß, kdy₧ jedna jednotka zßvisφ na jinΘ, kterß je zßrove≥ zßvislß na tΘ prvnφ. ╪eΦeno jinak: Jestli₧e jednotka A po₧φvß jednotku B a B pou₧φvß A, dostßvßme kruhov² odkaz. Dßle pak pokud v A je odkaz na B zßvislΘ na C a C pou₧φvß A. Jestli₧e B pou₧φvß jakoukoliv jednotku zßvislou na A, nebo rekurzivn∞, jakßkoliv jednotka zßvisφ na jinΘ, pou₧φvajφcφ A, pak je to op∞t kruhov² odkaz. V Borland Pascalu jsou kruhovΘ odkazy povoleny jen do tΘ mφry, kdy₧ je Φßst interface p°elo₧itelnß bez cirkularity. Proto nenφ chybou, jestli₧e A pou₧φvß B, ale B pou₧φvß A jen v implementaΦnφ Φßsti. Kompilßtor toto rozpoznß a pokraΦuje sm∞le v p°ekladu.

    ProΦ nejsou kruhovΘ odkazy povoleny?

    P°ekladaΦ SP/2 nepracuje naprosto stejn²m zp∙sobem jako jeho Borlandφ ekvivalent.

    PoΦφtß se do budoucna s jeho podporou?

    Ano, v p°φÜtφ verzi Speed-Pascalu/2.

    Co mßm tedy d∞lat?

    Budete muset provΘst restrukturizaci programu a kruhov²m odkaz∙m se vyhnout, nebo si pΦkat na novou verzi SP/2.

  15. Soubory OBJ se negeneruji
  16. Co jsou soubory OBJ?

    Moduly OBJ obsahujφ p°elo₧en² k≤d ve standardnφ form∞, tzn. lze je p°ipojit k programu pomocφ systΘmovΘho sestavovacφho programu - linkeru.

    ProΦ SP/2 negeneruje soubory OBJ?

    Borland Pascal tradiΦn∞ soubory OBJ nikdy nevytvß°el. P°elo₧enß jednotka (soubor TPU) obsahuje mnohem inteligentn∞jÜφ formßt umo₧≥ujφcφ relativn∞ rzchlou kompilaci a linkovßnφ program∙. AΦkoliv prvotnφ v²hodou vytvß°enφ modul∙ OBJ je mo₧nost jejich p°ipojenφ k programu psanΘm v jinΘm jazyce (nap°. C), je zde stßle n∞kolik faktor∙ Φinφcφch tento proces nev²znamn²m:

    1. Programy psanΘ v jin²ch jazycφch pou₧φvajφ jinΘ mechanismy volßnφ funkcφ, jinΘ datovΘ typy a v neposlednφ °ad∞ odkazy na jejich vlastnφ knihovny.
    2. R∙znΘ p°ekladaΦe vytvß°ejφ r∙znΘ formßty modulu OBJ, proto nemohou b²t pln∞ a efektivn∞ vyu₧φvßny.
    3. SystΘm zprost°edkovßvß p°φstup k funkcφm DLL knihoven standardnφm zp∙sobem. SP/2 vßm umo₧≥uje vytvß°et prßv∞ takovΘ knihovny.
    Bude SP/2 v budoucnu vytvß°et moduly OBJ?

    Mo₧nß. Borland, neovlivn∞n poptßvkou, uvedl tuto funkci v Delphi 2.0, a to hlavn∞ proto, ₧e back-end PascalovΘho p°ekladaΦe byl nahrazen back-endem kompilßtoru C++.

    Co mßm tedy d∞lat?

    Pou₧φvat knihovny DLL jak to jen jde.

  17. P°φmß adresace pam∞¥ovΘho prostoru nenφ povolena
  18. Co je to absolute memory access?

    P°φm² p°φstup k pam∞ti se provßdφ pomocφ adresy p°φsluÜnΘ oblasti RAM. Tento zp∙sob je velice Φast² a populßrnφ pod DOSem. Pou₧φvß se nap°. ke zm∞n∞ reboot k≤du (viz QEMM QuickBoot), apod.

    ProΦ nenφ implementovßn?

    OS/2 ho programßtor∙m sprost°edkovßvß pomocφ funkcφ API a omezuje je tak ve volnΘm a nekontrolovatelnΘm pohyby v oblasti hardwaru.

    PoΦφtß se do budoucna s jeho podporou?

    NepoΦφtß.

    Co mßm tedy d∞lat?

    Odstra≥te z vaÜeho k≤du p°φmou adresaci pam∞ti a sty∩te se. :-)

  19. Procedury a funkce pozm∞n∞nΘ v SP/2
  20. Nßsledujφcφ funkce pou₧φvajφ 32-bitovΘ parametry na rozdφl od funkcφ ekvivalentnφch v BP7. Ty pracujφ s parametry 16-bitov²mi.

    BlockRead BlockWrite GetFAttr

    KlφΦovΘ slovo Absolute (viz v²Üe) je mo₧nΘ pou₧φvat i nadßle, ale ne k p°φmΘ adresaci pam∞¥ovΘho prostoru.

  21. Procedury a funkce neiplementovanΘ v SP/2
  22. Z v²Üe zmφn∞n²ch d∙vod∙ nelze n∞kterΘ funkce jednoduÜe p°elo₧it pro 32-bitovΘ systΘmy. Nßsleduje tabulka standardnφch funkcφ, kterΘ s SP/2 v1.5 nefungujφ.

    Procedury a funkce z jednotek Graph, Graph3 a Overlay zde neuvßdφm, nebo¥ SP/2 nepodporuje p°enos DOSov²ch grafick²ch program∙ do platformy OS/2.

    AssignCrt CmdLine* CmdShow* AssignCrt CmdLine*
    CmdShow* CSeg+ DSeg+ Eoln ErrorAddr
    Exclude Flush GetCBreak GetIntVect~ HeapAllocFlags
    HeapBlock HeapLimit HeapList HInstance* HPrevInst*
    Include InOutRes Intr~ Keep~ MEM+
    MEML+ MsDOS* OFS+ OvrEmsHandle& Port*
    PrefixSeg+ Ptr+ RealModeRegs+ SaveIntXX~ SeekEof
    SeekEoln SEG+ Seg0040+ SegA000+ SegB000+
    SegB800+ SelectorInc+ SetCBreak SetIntVec~ SPtr+
    SSeg+ StackLimit Test8086* Test8087*

    * Indikuje proceduru/fci specifickou pro urΦitou platformu (Win16, DOS)
    + Indikuje proceduru/fci pracujφcφ se segmentovou architekturou.
    ~ P°eruÜenφ nebo rezidentnφ funkce
    & Procedura nebo funkce p°ekryvnΘho modulu

    NeoznaΦenΘ procedury a funkce jsou v BP7 a SP/2 implementovßny rozdφln∞. Tyto funkce budou obsa₧eny v p°φÜtφ verzi.


Zp∞t Vp°ed