Euforija iki C Vertėjas

Išversta su http://www.rapideuphoria.com/e2c.htm

1. Įžanga

Euforijos iki C Vertėjas vers bet Euforija programą į lygiavertes C šaltinio kodas.

Yra versijų, vertėjas Windows, DOS, Linux ir FreeBSD. Po vertimas Euforija programą, C, galima sudaryti ir nuorodą, naudojant vieną iš palaikomų C kompiliatorių. Tai suteiks jums vykdomąjį failą, kuris paprastai veiks daug greičiau, nei jei naudojote Euforija žodžiu.

Vertėjas gali versti/sudaryti *itself* į vykdomąjį failą kiekvienam platforma. Vertėjas taip pat yra naudojami verčiant/užpildymas, front-end dalis, vertėjas. Šaltinio kodą Vertėjas yra euforija\šaltinis. Tai parašyta 100% – Euforija.

2. C Kompiliatoriai Pritarė

Vertėjas, šiuo metu dirba su GNU C a Linux ar FreeBSD, su arba Watcom C arba DJGPP C a DOS, ir su Watcom C, Lcc arba Borland 5.5 a Windows. Visa tai yra nemokamai kompiliatorių. GNU C egzistuos, jau savo Linux ar FreeBSD sistemą. Kiti gali būti atsisiųsti iš jų Interneto svetainių. Windows, mes primygtinai rekomenduojame, Watcom arba Borland per Lcc. Lcc vis dar yra aktyviai kuriamos ir yra, vis geriau, tačiau yra keletas klaidų, kad bus sunku jums sudaryti didelį “Windows” programa teisingai. Watcom ir Borland yra tiek uola. Watcom paprastai gamina šiek tiek mažesnis, šiek tiek greičiau vykdomosios, bet Borland kaupia daug greičiau.

Į Watcom DOS32 paketas apima CauseWay DOS extender ir failų kompresijos. CauseWay dabar yra atviro kodo ir nemokama. Galite sužinoti daugiau apie tai: http://www.devoresoftware.com

emake.bat ir objfiles.lnk bus saitą CauseWay extender automatiškai. Kiti DOS ilgikliai, tokių kaip DOS4GW, nėra gerai dirbti su Vertėjo.

Vertėjas ieško “WATCOM”, “LCC”, “BORLAND” arba “DJGPP” arba kaip aplinkos kintamieji ar katalogus. Tai sukels emake.bat failą, kuris pritaiko atitinkamą sudarytojas ir linker.

Pastabos:

  • Skirtingai nuo Watcom, DJGPP neturi žemėlapio DOS atminties į pačiame segmente, kaip ir kitų atminties. Mašinos kodas kasdienybe parašyti Watcom pagrindu Euforija Žodžiu arba raštu neveiks su DJGPP, ir, greičiausiai, bus užstrigti, jei jie bando pasiekti, atminties, pvz., vaizdo atminties. Euforija peek(), poke(), mem_copy(), mem_set() ir pan. dirbs teisingai, kaip Vertėjas naudoja specialų DJGPP makro prieigos prie atminties. Galite uosto šios mašinos kodas kasdienybe DJGPP, bet jums reikia pasikonsultuoti su DJGPP dokumentų būdus, kaip pasiekti mažai atminties.
  • DJGPP visiškai palaiko ilgus failų vardus skaityti, rašyti ir kurti. Watcom nepalaiko kūrimą.
  • Vertėjo DJGPP nepalaiko naudoti pelę.
  • Į Allegro grafikos biblioteka, kuriuos mes naudojame DJGPP, atrodo, kad daug greičiau nei Watcom grafikos biblioteka daugeliu atvejų.
  • DJGPP palaiko keletą teksto režimai, pvz., 35-line) režimu.
  • DJGPP leidžia vartotojui nutraukti programą, bet kuriuo metu, įvesdami kontrolės-c.
  • Lcc įgyvendinimo ignoruoja lock_file() ir unlock_file(). Jie nieko.
  • Vertėjas naudoja Lcc-O optimizavimo vėliava emake.bat. Ši vėliava, kartais gali įtraukti į Lcc nepatikimumą. Jei programa neveikia, pabandykite pašalinti šią vėliavą iš visų sudaryti komandas emake.bat.
  • Įspėjimai išjungiami, sudarant su emake.bat. Jei juos įjungti, jūs galite pamatyti, kai nekenksmingas pranešimus apie kintamųjų deklaruojamas, bet ne naudoti, etiketės, nustatyta, bet nenaudojamas, funkcijų prototipai nėra deklaruotas ir pan.
  • Apie Windows, Watcom linker gali pareikšti įspėjimą, kad ji negali atidaryti grafikas.lib. Galite nekreipti dėmesio į tai. grafikas.lib nėra naudojama. Neatrodo, kad gali būti paprastas būdas slopinti šio pranešimo. Naujausia versija Atidaryti Watcom, atrodo, buvo ištaisyti tai.
  • Su Borland ir Lcc, Windows konsolės (teksto režimas) programos negali perskaityti F-klavišus arba rodyklių klavišus, ir jums gali tekti paspauskite Enter klavišą du kartus. Nėra jokių problemų su GUI programas.
  • Microsoft C++ kompiliatorius, skirtas Windows kol kas nepalaikomas. Tačiau jūs tikriausiai galite importuoti C failų generuoja ecw.exe ir bibliotekos failą Borland, Lcc arba Watcom į Microsoft projektas, ir kompiliavimo/nuoroda tik smulkius trikdžių.

3. Kaip Paleisti Vertėjas

Veikia Vertėjas yra panašus į važiavimo Vertėjas. Dėl DOS galėtumėte tipas:

ec allsorts.ex
arba
ec allsorts

Windows galėtumėte tipas:

ecw taskwire.exw
arba
ecw taskwire

Linux/FreeBSD galėtumėte tipas:

ecu qsort.exu
arba
ecu qsort

bet vietoj to, veikia allsorts.ex programa, Vertėjas, bus sukurti keli C šaltinio failus. Kiekvienas gali paleisti Vertėjas. Ji įtraukta į euforijos\bin kartu su žodžiu. Kaupti ir susieti C failų, jums reikia įdiegti vieną iš palaikomų C kompiliatorių. Vertėjas sukuria partijos byla vadinama emake.bat, kad daro viską, kad renkant ir susieti šiuos veiksmus už jus, todėl jūs ne iš tikrųjų turėti nieko žinoti apie C ar C kompiliatorių. Tiesiog įveskite:

emake

Kai C kompiliavimui ir susiejimas yra baigtas, jūs turite failą pavadinimu: allsorts.exe ir C šaltinis failus, bus pašalintas, siekiant išvengti trukdžių.

Kai jums paleisti allsorts.exe ji turėtų paleisti tą patį, kaip jei buvo įvestas: ex allsorts paleisti jį su Žodžiu, išskyrus tai, kad jis turėtų veikti greičiau, kuriame sumažintas kartus už įvairius rūšiavimo algoritmus, euforija\demo\allsorts.ex.

Sukūrę savo vykdomąjį failą, emake pašalina C failus, kurie buvo sukurti. Jei norite peržiūrėti šiuos failus, paleisti vertėjas vėl, ir dar kartą pažvelgti į failus, prieš paleidžiant emake.

Pastaba Linux ir FreeBSD naudotojų:

Failai bus vadinamas emake ir shell, ir jums tipą ./emake atlikti kaupia ir nuorodą ./shell paleisti lukštais rūšiuoti programa.

Pastaba Borland ir Lcc vartotojų:

Už Borland ir Lcc nėra standartinio aplinkos kintamąjį, todėl Vertėjas ieškos jūsų PATH kintamojo ieško tikėtina, sudarytojas katalogas. Jis atrodo standartinis vietose, pvz: ..\LCC, ..\BCC.., ..\Borland.. tt. ir tt. Jei įdiegėte į nestandartinė vieta, jums gali tekti pervadinti savo diegimo katalogas. Redaguoti jūsų PATH kintamojo dėl Windows XP, spustelėkit: Start Menu / Control Panel / Performance and Maintenance / System / Advanced / Environment Variables / User variables for … Tada Pasirinkite PATH ir redaguoti savo vertę. Įterpti kažkur: C:\BORLAND\BCC55\BIN; arba C:\LCC\BIN; Tada spustelėkite OK keletą kartų, kad uždarytumėte langus. Kitą DOS lange galite atidaryti turėtų turėti naują vertę.

Komandų Eilutės Parinktis

Jei atsitiktų turėti daugiau nei vieną C kompiliatorių, už tam tikrą platformą, jūs galite pasirinkti vieną, kurį norite naudoti su komandų eilutės parinktis:

-bor
-lcc
-wat
-djg

į komandų eilutę ec arba ecw. pvz.

ecw -bor pretend.exw

Paprastai, po pastato savo .exe failą, emake partijos byla bus ištrinti visi C failus ir objekto failai pagamintas vertėjo. Jei norite emake išlaikyti šiuos failus, pridėti -keep galimybė vertėjas komandinės eilutės. pvz.

ec -wat -keep sanity.ex

Kad Windows .dll failą, ar Linux ar FreeBSD .taigi failą, tiesiog add -dll komandinę eilutę. pvz.

  ecw -bor -dll mylib.ew

Kad Windows konsolės programa, o ne Windows GUI programa, pridėti -con į komandų eilutę. pvz.

ecw -bor -con myprog.exw

Norėdami padidinti arba sumažinti sumą, kamino pildo savo programą, įtraukti -stack nnnn į komandų eilutę. pvz.

ec -stack 100000 myprog.ex

Viso kamino vietos (baitais), kad nurodytumėte bus padalintas visas užduotis, kad jūs naudojate (darant prielaidą, kad jūs turite daugiau nei vieną). Kiekviena užduotis turi savo privataus kamino vietos. Jei ji viršija jos paskirstymas, jūs gausite run-time error pranešimą nustatyti užduotis ir suteikti dydžio kamino vietos. Dauguma ne rekursinis užduotis gali važiuoti su skambinkite kaminai, kaip mažas, 2000 baitų, bet ir būti saugus, jums turėtų leisti daugiau, nei tai. Giliai rekursinis užduotis, galima naudoti daug vietos. Viskas priklauso nuo to, didžiausias skambučių, kad užduotis gali prireikti. Ne run-time, kaip jūsų programa sukuria daugiau vienu metu-aktyviai užduotis, kamino vietos paskirstytos į kiekvieną užduotį bus linkusios mažėti.

Padaryti DOS programa, parengta WATCOM, kurie naudoja greitai aparatūros slankiojo kablelio instrukcijos, add -fastfp į komandų eilutę. pvz.

ec -wat -fastfp crunch.ex

Pagal numatytuosius nustatymus, Euforija dėl DOS ragina kasdienybe patikrinti, jei aparatūros slankiojo kablelio instrukcijos yra. Jei jie nėra, tada lėčiau programinė įranga emuliacija kodas naudojamas. Kai -fastfp yra nurodyta, rengiami kodas laikys egzistavimo aparatūros slankiojo kablelio. Tai gali sukelti slankiojo kablelio intensyvias programas paleisti apie du kartus taip greitai, bet jie nebus paleisti ant senų 486 ir 386, kad trūksta aparatūros floating-point parama. Su -fastfp, emake.gpgb pasirenka greičiau WATCOM C kompiliatoriaus parinktys, ir emake.bat taip pat turi nuorodą į ecfastfp.lib vietoj eb.lib.

Dėl visų kitų platformų, Euforija naudoja greitai aparatūros slankiojo kablelio instrukcijas, ir operacinės sistemos rankenos atvejis, kai aparatūrą f.p. nėra.

Norėdami sudaryti savo programą, derinimo informacija, tinkami naudoti su derintuvas, suderinamas su jūsų sudarytojas, naudoti -debug galimybė:

ecu -debug myapp.exu

Kartais yra naudinga susieti savo išversti kodo Euforija runtime library, išskyrus numatytuosius pateikta biblioteka. Šis gebėjimas yra turbūt labiausiai naudinga, testavimo ir derinimo runtime library pati, ar suteikti papildomų derinimo informacija, kai derinimo išverstas Euforija kodą. Atkreipkite dėmesį, kad tik numatytosios bibliotekos yra pateikta. Vartotojo bibliotekoje turi būti įdėti į savo EUDIR/bin katalogą, kartu su numatytosios bibliotekos. Naudoti -lib {library} variantas:

ecu -lib decu.a myapp.exu

4. Dinaminių Saitų Bibliotekos (Shared Bibliotekos)

Tiesiog pridedant -dll komandinę eilutę, Vertėjas, bus sukurti Windows .dll (Linux/FreeBSD .so,) failą, o ne vykdomąjį programa.

Galite versti ir sudaryti rinkinį naudinga Euforija kasdienybe, ir dalinkitės jais su kitais žmonėmis, nenurodant jų šaltinio. Be to, jūsų kasdienybe greičiausiai veiks daug greičiau, kai išvertė ir parengė. Tiek išversti/kaupiami ir aiškinti programos galės naudoti savo biblioteką.

Tik pasaulio Euforija procedūras ir funkcijas, t. y. tos, pareiškė “global” raktinis žodis, bus eksportuotos iš europos .dll (.so).

Bet Euforija programa, ar išversti/sudarytojai, arba aiškinama, gali susieti su Euforija.dll (.so) naudojant tą patį mechanizmą, kuris leidžia jums susieti su .dll (.so) parašyta C. Programa pirmuosius kvietimus open_dll (), kad atidarytumėte .dll arba .so failą, tada jis ragina define_c_func() arba define_c_proc(), bet kasdienybe, kad ji nori skambinti. Ji ragina šių kasdienybe naudojant c_func() ir c_proc(). Žr. library.doc informacija.

Įprastinius pavadinimus, eksportuotos iš Euforijos .dll bus skirtis priklausomai nuo to, kuri C kompiliatorius, galite naudoti.

GNU C apie Linux ar FreeBSD eksporto pavadinimai tiksliai taip, kaip jie atrodo, C kodas, gautas Vertėjas, pvz., Euforija rutinos

global procedure foo(integer x, integer y)

būtų galima eksportuoti “_0foo” arba gal “_1foo” ir kt. Į pabrėžti ir skaitmuo yra papildomas išvengti pavadinimų konfliktus. Skaitmuo reiškia Euforija failą, kurio simbolis yra apibrėžta. Pagrindinis failas yra sunumeruoti kaip 0. Įtraukti failai yra sunumeruotos ta tvarka, kokia jie yra, su kuriomis susiduria sudarytojas. Jums reikėtų patikrinti C šaltinis, turi būti tikri.

Lcc būtų eksporto foo() kaip “__0foo@8”, kur 8 yra parametrų skaičius (2) kartus 4. Galite patikrinti .def failas sukurtas Vertėjas norėdami pamatyti visus eksportuojamus vardai.

Už Borland Vertėjas taip pat sukuria .def failą, bet ir tai .def failą pervadina eksportuojami simboliai atgal į pačius pavadinimus, kuriuos galite naudoti iš savo Euforijos šaltinis, todėl foo() būtų galima eksportuoti “foo”.

Už Watcom to paties pervadinimo, kaip su Borland atsiranda, bet vietoj .def failą, EXPORT komanda yra įtraukta į objfiles.lnk už kiekvieną eksportuojamų simbolis.

Su Borland ir Watcom galite redaguoti .def ar objfiles.lnk failą ir paleiskite emake.bat, pervardyti eksportuojami simboliai, arba pašalinti tuos, kad nenorite eksporto. Su Lcc galite pašalinti simboliais, tačiau negalite pervardyti juos.

Atsižvelgdamas gražus eksportuojami vardai yra ne kritinė, nes pavadinimas turi būti rodomi tik vieną kartą kiekvienam Euforija programa, kuri naudoja .dll, t. y. į vieną define_c_func() arba define_c_proc() ataskaitoje. Autorius .dll tikriausiai turėtų teikti savo vartotojams su Euforija apima failas, kuriame yra būtinas define_c_func() ir define_c_proc() ataskaitos, ir jis gali netgi nustatyti Euforija “apvalkalas” kasdienybe vadiname kasdienybe .dll.

Kai skambinate open_dll(), bet aukščiausio lygio Euforija pareiškimus .dll arba .so, bus vykdomas automatiškai, kaip ir normali programa. Tai suteikia biblioteka galimybę inicijuoti jos duomenų struktūras prieš pirmąjį kvietimą į biblioteką rutinos. Daugelis bibliotekų no iniciacijos yra būtinas.

Perduoti Euforija duomenų (atomų ir sekas), kaip argumentus, arba gauti Euforija objektas, kaip rezultatas, jūs turėsite naudoti šių konstantų, euphoria\include\dll.e:

— Euforijos tipai .dll (.so) argumentus ir grįžti vertės:

pasaulio konstanta

E_INTEGER = #06000004,
E_ATOM    = #07000004,
E_SEQUENCE= #08000004,
E_OBJECT  = #09000004

Naudoti šiuos define_c_proc() ir define_c_func (), tik, kaip jūs šiuo metu naudojate, C_INT, C_UINT ir kt. skambinti C .dll ir .so.

Šiuo metu, failų numeriai grąžinti atidaryti(), ir eiliniai id grąžinti routine_id(), gali būti perduotas ir grąžintas, bet biblioteka ir pagrindinės programos, kiekvienas turi savo atskirą idėjų, ką tie skaičiai reiškia. Vietoj artimųjų bylos numeris atidaryti failą, galite vietoj pass failo pavadinimas ir tegul .dll (.so) atidaryta. Deja, nėra paprastas sprendimas perduoti kasdieninį id. Tai galima ištaisyti ateityje.

Euforija .dll arba .so šiuo metu negali vykdyti bet multitasking operacijas. Vertėjas suteiks jums klaidos pranešimą apie tai.

Euforija .dlls (.so) taip pat gali būti naudojamas C programas, kaip ilgai, kaip tik 31-bitų sveikasis skaičius, vertybės keičiasi. Jei 32 bitų žymiklį arba sveikojo skaičiaus turi būti praėjo, ir jūs turite šaltinis C programa, galite pereiti vertės du atskiri 16-bitų sveikasis skaičius, argumentus (viršutinį 16 bitų ir apatinės 16 bitų), ir tada sujungti vertės Euforija rutinos į norimą 32-bitų atomas.

5. Vykdomąjį Dydžio ir Suspaudimo

Dėl DOS32 su Watcom, jei Vertėjas randa CauseWay failus, cwc.exe ir le23p.exe į euphoria\bin, tai pridės komandas emake.bat kad bus suspausti savo vykdomąjį failą. Jei nenorite, suspaudimo, galite redaguoti emake.bat, pašalinti ar pervardyti cwc.exe ir/arba le23p.exe.

Apie Linux, FreeBSD, Windows, ir DOS32 su DJGPP, emake nėra komandą suspausti savo vykdomąjį failą. Jei norite tai padaryti, mes siūlome jums išbandyti nemokamai UPX kompresorius. Jūs galite gauti UPX nuo: http://upx.sourceforge.net Didelis Win32Lib pagrindu .exe sukūrė Vertėjo gali būti suspaustas UPX apie 15% savo pradinio dydžio, ir jūs nepastebi jokio skirtumo pradžios laiką.

Vertėjas ištrina kasdienybe, kad nėra naudojamos, įskaitant tuos, kurie iš standartinės Euforija apima failus. Po ištrinti nenaudojamas kasdienybe, ji patikrina, vėl daugiau kasdienybe, kad dabar tapo nenaudojama, ir taip toliau. Tai gali padaryti didelį skirtumą, ypač su Win32Lib pagrįstas programas, kuriose didelis failas yra įtrauktas, bet daugelis įtraukti kasdienybe naudojami ne tam tikrą programą.

Vis dėlto, jūsų surinkta vykdomąjį failą greičiausiai bus didesnis, nei tas pats Euforija programa susijęs su žodžiu back-end. Iš dalies taip yra dėl to back-end yra suspaustas vykdomąjį. Taip pat, Euforija ataskaitos yra itin kompaktiškas, kai saugomi privalo failą. Jie turi daugiau erdvės po to, kai buvo išverstas į C, ir surinkti į mašininį kodą. Ateityje versijos Vertėjas leis gaminti greičiau ir mažesnių vykdomąjį.

6. Žodžiu palyginti Vertėjas

Visi Euforija programos gali būti verčiami į C, ir tik su keliomis išimtimis pažymėti žemiau, bus paleisti tas pats, kaip su Žodžiu (bet tikėkimės, kad greičiau).

Vertėjas žodžiu ir Vertėjas pačią analizatorius, tad jūs gausite pačią sintaksės klaidų, kintamasis nėra paskelbtos klaidų ir ex.err pan su vienu.

Žodžiu automatiškai plečiasi, skambinimo kamino (iki atminties yra išnaudota), todėl jūs galite turėti labai daug lygių, įdėtos į skambučius. Dauguma C kompiliatorių, daugelyje sistemų, turi iš anksto nustatytą ribinį dydį kamino. Pasikonsultuokite su savo sudarytojas ar linker vadovą, jei norite, kad padidintų limitą, pavyzdžiui, jei jūs turite rekursinis įprasta, kad gali prireikti tūkstančių lygiai rekursija. Keisti nuorodą komandą emake.gpgb. Už Watcom C, naudokite OPTION STACK=nnnn, kai nnnn yra baitų skaičius, kamino tarpą.

Pastaba:

Vertėjas reiškia, kad jūsų programa neturi run-time klaidų tai, kad būtų sugauti Žodžiu. Vertėjas netikrina: indeksas ribų, kintamasis nėra inicijuotos priskirti negerai duomenų tipas kintamos ir kt.

Jums turėtų derinti savo programą su Žodžiu. Vertėjas patikrinimai dėl tam tikrų run-time klaidų, tačiau interesų greičio, dauguma yra ne patikrinti. Išvertus C kodas sugenda, jūs paprastai gauti labai paslaptingas mašina išimtis. Daugeliu atvejų, pirmas dalykas, ką jums reikia padaryti, tai paleisti savo programą, Vertėjas, naudojant tos pačios žaliavos, ir, pageidautina su type_check įjungtas. Jei klaida tik rodo išverstas kodą, galite naudoti su atsekti ir mikroelementų(3), siekiant gauti ctrace.iš failą, kuriame apskrito rezervo paskutinius 500 Euforija ataskaitų įvykdytas. Jei vertėjas-aptikti rodomas klaidos pranešimas (ir saugomiex.err), jums taip pat žr. nusižengti linija Euforija šaltinis, kai su atsekti efektas. su atsekti bus lėtai savo programą žemyn, ir sulėtėjimas gali būti ekstremalus, kai pėdsakų(3) taip pat yra iš tikrųjų.

7. Teisiniai Apribojimai

Kiek RDS yra susirūpinęs, bet vykdomąjį programos arba .dll, kad jums sukurti su šiuo Vertėjas, nekeičiant RDS vertėjas bibliotekos failą, gali būti paskirstytas autorinis atlyginimas-nemokamai. Jūs galite įtraukti bet Euforija failus teikia RDS į jūsų prašymą.

Sausio 2000, sausio mėnesį, CauseWay DOS extender buvo padovanota vieša Michael Devore. Jis buvo atsisakyta jo autorių, ir kas skatina jį naudoti laisvai, įskaitant komerciniam naudojimui.

Apskritai, jei jūs norite naudoti Euforija kodas parašyta iš 3-ųjų šalių, jums būtų geriau, pagerbti visų apribojimų, kurie taikomi. Jei abejojate, jums turėtų paprašyti leidimo.

Linux, FreeBSD ir DJGPP už DOS32, GNU Library licencija paprastai neturi įtakos programos, sukurtos naudojant šį Vertėjas. Tiesiog sudarant su GNU C nesuteikia Free Software Foundation bet jurisdikciją savo programą. Jei jūs statiškai susieti savo bibliotekas, jums bus taikomi jų Bibliotekos pažymėjimą, bet standartinis kompiliavimo/link tvarkos emake nėra statiškai nuorodą, bet FSF bibliotekos, taigi neturėtų kilti jokių problemų.

Į Allegro grafikos biblioteka, naudojamas DJGPP, vadinama “Giftware” savo dokumentus, ir jie suteikia galimybę perskirstyti jį kaip dalį savo programos. Jie prašyti, bet ne reikalauti, kad, kai patvirtinimą.

Atsakomybės apribojimas:

Tai, ką mes tikime atveju. Mes ne teisininkai. Jei jums svarbu, perskaitykite GNU Library licencijos, teisės komentarų DJGPP, Lcc ir Borland, ir Michael Devore tai skaityti.man failą į savo svetainę, norėdami susidaryti savo nuomonę.

9. Dažnai Užduodami Klausimai

Klausimai Kiek greitis-iki turėčiau tikėtis?
Atsakymas – Viskas priklauso nuo to, ką savo programą skiria savo laiką daro. Programos, kurios naudoja daugiausia sveikojo skaičiaus skaičiavimai, nereikia skambinti run-time kasdienybe, labai dažnai, ir nedaryk daug I/O bus matyti, labiausiai pagerėjo, šiuo metu siekia apie 5x greičiau. Kitos programos gali matyti tik keletą procentų geriau.
Įvairūs C kompiliatoriai nėra lygios optimizavimo galimybes. Watcom, GNU C ir DJGPP greičiausiu kodą. Borland yra gana geros. Lcc vvg šiek tiek atsilieka nuo kitų, net jei jos -O vėliavėlė yra naudojama.

Borland renka greičiausias. Watcom renka lėčiausias.

KlausimaiKą daryti, jei noriu pakeisti kaupti ar nuorodą funkcijos emake.bat?
Atsakymas – Feel free to padaryti, tačiau jums reikia kopijuoti emake.lazda į savo failą pavadinimu (pasakyti), mymake.bat, tada paleisti mymake.bat po bėgimo Vertėjas. Kartais skaičių .c failų, sukurtų Vertėjo galėtų pasikeisti.

KlausimaiKaip aš galiu padaryti, kad mano programa paleisti dar greičiau?
Atsakymas – Svarbu deklaruoti kintamuosius kaip sveikasis skaičius, jei įmanoma. Apskritai, tai padeda, jei jums pasirinkti labiausiai ribojančių tipas įmanoma, kai skelbiama, kad kintamasis.
Tipiškas vartotojo apibrėžtų tipų nebus lėtai you down. Kadangi jūsų programa turi būti be type_check klaidų, tipai yra ignoruojami Vertėjas, išskyrus atvejus, kai jiems skambinate tiesiogiai su funkcija normali skambučius. Viena išimtis yra, kai apibrėžtos vartotojo tipas rutinos, turi šalutinį poveikį (t. y. jame pasaulio kintamasis, atlieka pokes į memory, I/O ir kt.). Tokiu atveju, jei su type_check efektas, Vertėjas pateiks kodas skambinti tipo rutinos ir pranešti apie bet type_check gedimą, kuris rezultatai.

Apie Windows ir DOS mes turime paliktas /olis linijos optimizavimas Watcom  wcc386. Mes radome pora retais atvejais, kad ši galimybė led neteisingo mašinos kodas yra skleidžiamas Watcom C kompiliatorius. Jei jūs įtraukiate jį atgal, prie savo versiją emake.gpgb jūs galite gauti šiek tiek pagerėjo greičio, su šiek tiek rizikos buggy kodą. Už DJGPP galite pabandyti -O6 vietoj -O2.

Dėl DOS mes naudojame Watcom /fpc variantas, kuris generuoja skambučius run-time kasdienybe atlikti slankiojo kablelio operacijų. Jei mašina turi slankiojo kablelio aparatūros jis bus naudojamas rutinos, kitaip programinė įranga emuliacija bus naudojamas. Tai lėtina dalykų žemyn šiek tiek, ir nėra būtina Pentiums, tačiau ji garantuoja, kad jūsų programa bus paleisti visi 386 ir 486 mašinos, net jei jiems trūksta slankiojo kablelio aparatūros. DOS paleisti-laikas biblioteka, eb.lib, buvo pastatytas taip, kad jūs galite ne tik pašalinti šią parinktį.

Linux ar FreeBSD galite pabandyti O3 galimybė gcc, o ne O2. Tai bus “linija” small kasdienybe, pagerinti greitis šiek tiek, bet sukurti didesnę vykdomąjį. Taip pat galite pabandyti Intel C++ Kompiliatorius Linux. Ji suderinama su GNU C, bet ir kai kuriuos patikslinimus į emake gali būti reikalaujama.

10. Bendros Problemos

Daug didelių programos buvo sėkmingai išversta ir sudaryta naudojant kiekvieną remiamų C kompiliatorių, ir Vertėjas dabar yra gana stabilus.

Pastaba:

Ant Windows, jei galite skambinti a C įprasta, kad naudoja cdecl skambina konvencijos (vietoj stdcall), turite nurodyti ‘+’ ženklą pradžioje įprastas vardas define_c_proc() ir define_c_func(). Jei jūs neturite, skambinkite gali dirbti, kai veikia exw Žodžiu, bet tikriausiai nepavyks (avarijos), kai jums išversti ir sudaryti su Borland arba Lcc.

Kai kuriais atvejais didžiulė Euforija rutina yra verčiami į C, ir tai įrodo, kad per didelis C kompiliatorius į procesą. Jei jums paleisti į šią problemą, kad jūsų Euforija rutinos, mažesnis ir paprastesnis. Taip pat galite pabandyti išjungti C optimizavimas emake.bat tik už .c failą, kad nepavyksta. Karščiausios iki vieno pastovaus deklaracija daug kintamųjų, į atskiras nuolat deklaracijas vieno kintamojo kiekvienas, taip pat gali padėti. Euforija neturi ribų dydis rutina, arba failo dydis, bet dauguma C kompiliatoriai padaryti. Vertėjas bus automatiškai gaminti kelis mažus .c failus iš didelės Euforijos failą, kad išvengti pabrėždamas C kompiliatorius. Tai nebus vis dėlto pertraukos didelė rutinos į mažesnius kasdienybe.

Po klaidų ataskaitas apie EUforum.
Visų pirma pranešti bet kuri programa, kuri neveikia, tas pats, kai rengiami kaip ji tai daro, kai aiškinama.

 

 

Grįžti į pagrindinį

Leave a Reply

Your email address will not be published. Required fields are marked *