MorphOSin SDKoon c++ kääntäjä...

Saku-foorumi » Uusi sukupolvi: MorphOS » Ohjelmointi » Viestit 2004 » MorphOSin SDKoon c++ kääntäjä « Edellinen Seuraava »

Kirjoittaja Viesti
 

JPQ
Lauantaina, 2. lokakuuta, 2004 - klo 6.27:   
Muistanko oikein että MorphOSin SDKoon GCC paketin c++ kääntäjä on
"rikki" ja jos oli rikki niin missä se toimiva oli?

PS. eräs c++ koodi ei käänny en näe siinä vikaakaan.:)

 

JPQ
Lauantaina, 2. lokakuuta, 2004 - klo 15.13:   
Eikä muistin varassa tehty helloworld kloonikaan.:( Eikä hieno
säädettynäkään...:( eli jos vain linkin saisin.:)

 

itix
Lauantaina, 2. lokakuuta, 2004 - klo 15.30:   
Osa C++ koodista kääntyy, osa ei.

Vaihda vanhempaan versioon: Toimiva gcc

(en kyllä muista miten tuo piti asentaa, tuo nimittäin vaatii hiukan enemmän säätöä sitten...)

 

JPQ
Lauantaina, 2. lokakuuta, 2004 - klo 15.48:   
itix: aha löysinkin tuon jo (oli kovempi työ kuin luulin) mutta
tosiaan ei voi tietenkään asentua suoraan.
ihan kenelle vaan joka tietää: ja alkup. paketin g++ on soft
link.:(:(:( ja kokeilin kierouttani nimetä tuon g++ fileen joka
paketissa on g++2 nimelle väittää ettei ole ajettava vaikka
järjestelyjen jälkeen onkin r,w,e,d liput päällä. (eli myös lippu e)
Eli jatko apua odotan.:)

 

itix
Lauantaina, 2. lokakuuta, 2004 - klo 16.01:   
Kokemattoman ei kyllä kannata alkaa itse tuota pakettia asentamaan. Tee ainakin entisestä GG-hakemistosta varmuuskopio ennen kuin alat kopioimaan mitään tiedostoja.

Kaikkea tuosta paketista ei tarvitse (tai kannata) kopioida... yritin vilkaista MDC:stä linkkiä mutta en löytänyt mitään... (siellä se on kyllä joskus kerrottu)

 

JPQ
Lauantaina, 2. lokakuuta, 2004 - klo 18.34:   
itix: minäkin löysin tuon paketin jostain saksankielisestä ketjusta jossa en tiedä saiko tyyppi lopulta tuon toimimaan toisten neuvoilla ainoa vaan tuon tason saksa menee yli kaalin.

 

JPQ
Sunnuntaina, 3. lokakuuta, 2004 - klo 2.02:   
http://www.amiga-news.de/forum/thread.php3?id=12849&BoardID=15
tuolla tuo saksalais juttu käänsin tekstin babelfishillä englanniksi
ja kopioin ohjeiden mukaiset fileet muuten nyt tuntuu kääntyvän mutta
se toinen koodi ei siis helloworld on käännettynä yli 400kilotavua eli
jotain kait on vieläkin pielessä. Ja koodi on tässä:

#include
using namespace std ;
main ()
{
unsigned short value = 1;
unsigned char *ptr = (unsigned char *) &value;
if (*ptr == 1)
cout << "I'm Little-Endian" << endl ;
else
cout << "I'm Big-Endian" << endl ;
return 0 ;
}

PS. auttakaa olisi kiva "ehkä" opetella myös c++:saa eikä
pelkkää c kieltä. Nythän opiskelua hankaloittaa aika ilmeisen yli isot
ajattevat voin sanoa nyt ei tällä hetkellä blitz basic tekeleetkään
tunnu isoilta.:)
PPS. koodi ei ole omaani eli sen laatua turha haukkua tässä mutta
ainakin sain pegasoksella tuloksen Big Endian joka on muistaakseni
oikein.:)

 

JPQ
Sunnuntaina, 3. lokakuuta, 2004 - klo 2.04:   
tuosta #include rivistä puuttuu osa. Jonka tietänette no se on
pienenmpikuin merkki iostream.h ja sitten vielä isompi kuin merkki.
Muuten näyttää koodi kopioituneen oikein.
PS. toki jos koodi rumaa koodausta olevinaan saa sitten sanoa
senkin.:)

 

Jon
Sunnuntaina, 3. lokakuuta, 2004 - klo 13.46:   
JPQ: kai kokeilit "stripata" exen? Eli muistaakseni linkata sen parametrilla -s, tai sitten erillisellä strip-käskyllä.

Nyt en aivan ymmärtäny, että oliko tuossa koodissa jotain vikaa? Jos on, niin kerro virheilmoitukset.

 

JPQ
Sunnuntaina, 3. lokakuuta, 2004 - klo 15.18:   
Jon: ei ollut vaan tarkoitin että kun siitä tulee se valtaisa ajettava oli ihmetyksen kohteena ja pistin koodin että voitte arvioida/kokeilla miten iso sen pitäisi olla. Tutkin neuvosi.

 

JPQ
Sunnuntaina, 3. lokakuuta, 2004 - klo 16.05:   
Strippiä kokeilin näin
strip a.out
kappas a.out pienee kyllä näinkin jo jonkin verran eli koko ennen
operaatiota oli 468848 ja sen jälkeen 130864. Ja koodina siis yllä
annettu pätkä joka ei varmaan vieläkään ole ihanne mitoissaan.:)
Rupean kohta stripin ohjeita lukemaan josko saisin lisää pois
tuossahan minun järkeeni ainakin puolet liikaa.:)

 

JPQ
Sunnuntaina, 3. lokakuuta, 2004 - klo 16.11:   
Kappas en vaan löytänyt ainakaan vielä strip ohjeita muita kun sen
komentorivi parametrit man sivun jonka aukaisu ei ole ainakaan näin
helppoa man strip...

 

JPQ
Sunnuntaina, 3. lokakuuta, 2004 - klo 16.12:   
oikeastaan tuo vika viittaisi siihen etten tiedä onko koodi huonoa
ohjelmointia jostain syystä. Ja morphoshan tulostaa tuolla Big
Endian.:)

 

Jon
Sunnuntaina, 3. lokakuuta, 2004 - klo 16.57:   
Siis C++-esimerkkinä tuo on huono. Aivan turha kääntää C++-kääntäjällä, jos aikoo käyttää cin/cout-juttuja pari kertaa!

Kyse on siitä, että kun teet vähän isompaa softaa esim. C:llä, niin todennäköisesti olisit joutunut itse koodaamaan jotain palikoita (=isompi softa), kun taas C++:aa käytettäessä kieli olisi mahdollistanut nämä (=vähemmän koodausta sinulle).

 

JPQ
Sunnuntaina, 3. lokakuuta, 2004 - klo 18.35:   
Jon: no tuo ei ole esimerkki tuo on ratkaisu erääseen pulmaan jota
sitten voi "valtaisa" ohjelma käyttää eli vain murto osa ohjelmaa ja
olet oikeassa ei todellakaan C++ ole järkevää noin pieneen juttuun en
vaan tiedä miksi kirjan kirjoittaja sitä käytti. Muut koodit on sitä
kieltä mikä on selkein kyseiseen asiaan eli kait C,C++,Pascal
vaihtoehdoista.

 

miksuh
Maanantaina, 4. lokakuuta, 2004 - klo 16.28:   
JPQ: No totahan mä olen monesti sullekin muistaakseni sanonut. GCC ei tee mitenkään hirveän isoa koodia, pitää vain huomata että oletuksena se laittaa exeen mukaan debug-kamaa. Jos ne on exessä, niin sillon se on iso. Ne GCC:n lisäämät jutut saa tosiaan pois GCC:n -s optiolla tai käyttämällä tota strip-komentoa. -s poistaa ne ylimääräset kamat siis jo käännettäessä.

 

miksuh
Maanantaina, 4. lokakuuta, 2004 - klo 16.37:   
"Kyse on siitä, että kun teet vähän isompaa softaa esim. C:llä, niin todennäköisesti olisit joutunut itse koodaamaan jotain palikoita (=isompi softa), kun taas C++:aa käytettäessä kieli olisi mahdollistanut nämä (=vähemmän koodausta sinulle). "

No onhan toikin toki totta, mutta mun mielestäni C++:n suurin etu on se, että se mahdollistaa paljon parenmman koodin uudelleenkäytettävyyden kuin C.

C++:lla voi toki ohjelmoida samaan tyyliin kuin C:llä, eli käyttämällä aliohjelmia terästettynä C++:n ominaisuuksilla, mutta sillon musta kyllä menetetään hyvin suuri osa C++:n hyödystä. C++ on parhaimmillaan juuri olio-ohjelmoinnissa. Jos koodin uudelleen käytettävyys ja ohjelmapalikoiden toteutuksen yksityiskohtien pilottaminen muulta ohjelmalta on tärkeitä juttuja, niin sillon C++ on oikea valinta.

 

miksuh
Maanantaina, 4. lokakuuta, 2004 - klo 16.47:   
JPQ: Jos sun on tarkotus tehdä tosta ohjelmapalikka, jota muut ohjelman osat voi käyttää, niin tee siitä luokka, josta voit sitten luoda olioita.

Kun kerran käytössä on C++, niin ehdottomasti kannattaa käyttää luokkia eikä tehdä perinteisiä aliohjelmiin perustuvia moduleita.

Eli jos C++:n käyttö kiinnostaa, ja jos se ei ole hirveän tuttu vielä, niin suosittelen lukemaan jostain C++ kirjasta tietoa luokista(class), olioista(objec), periytymisestä(inheritance) jne.

 

miksuh
Maanantaina, 4. lokakuuta, 2004 - klo 16.48:   
Tosin no toi kyseinen koodinpätkä on aika pikkanen luokan koodiksi, mutta jos toss ei ole kaikki nii... :)

 

JPQ
Maanantaina, 4. lokakuuta, 2004 - klo 19.49:   
miksuh: Aivan varmasti mutta ratkotaan ongelmaani eli käännetyn koodin kokoa. Koska ei tuo yli 100kilotavua oikein normaalilta kuulosta.
PS. C++ on oikea valinta myös jos osa koodista valmis koodia joka on C++ koodia.:)

 

Jon
Maanantaina, 4. lokakuuta, 2004 - klo 20.00:   
JPQ: teepäs kuvankäsittelijä tai teksturi C:llä ja C++:lla. Sitten katsotaan miten koodin määrät ja loppukoot mätsää ;)

 

Jon
Maanantaina, 4. lokakuuta, 2004 - klo 20.25:   
miksuh:
". -s poistaa ne ylimääräset kamat siis jo käännettäessä."

Jos tarkkoja ollaan, niin linkattaessa.

 

JPQ
Maanantaina, 4. lokakuuta, 2004 - klo 22.35:   
Jon: no joo mututa silti luulen kun kokoja katson että tuo mun tänne postaama koodi kasvaa liian isoksi. Jollei niin C++ ei ole varmaankaan minua varten.:( Eli voisitteko yrittää kääntää sen ja katsoa miten suuri tulee. En usko että se on kamalan vaikeaa tuskin edes työlästä.:)

 

antime
Tiistaina, 5. lokakuuta, 2004 - klo 1.29:   
Se mikä ohjelmassasi vie tilaa on staattisesti mukaan linkattu C++-kirjasto, eli kun käytät iostream-luokkia vedät mukaan paljon kirjastokoodia. Itse kirjoittamasi koodin osuus tuosta on häviävän pieni. Jos tämä todellakin on ongelma niin voit käyttää jaettua kirjastoa (jos vain on MOSsilla mahdollista, valaiskaa minua paremmin tietävät).

 

JPQ
Tiistaina, 5. lokakuuta, 2004 - klo 4.47:   
antime: eikö siitä voi kääntää vain tarpeellista osaa ? kun luulisi
että pieniä C++ softiakin on nähty. Kokeilen jos jaksan huomenna samaa
koodia classic amigalla ja hisoft cpp kääntäjällä jos tulee
alle 30kt niin uskoisin että joku mättää.

 

antime
Tiistaina, 5. lokakuuta, 2004 - klo 9.17:   
Ei siinä koko kirjastoa olekaan, mutta niitä tarpeellisia osia on paljon enemmän kuin luulisi. Noin vertauksena, Linuxilla stripattu binääri ohjelmastasi on vähän yli neljä kiloa.

 

JPQ
Tiistaina, 5. lokakuuta, 2004 - klo 9.55:   
antime: jotenkin tuo kuulostaa siltä mitä kokoa minäkin odotin odotin noin 3-5kilotavua. Eli uskaltainen päätellä että jotain on pielessä.
PS. oliko x86 vai PowerPC Linux ?

 

antime
Tiistaina, 5. lokakuuta, 2004 - klo 10.23:   
x86, PPC:llä tulos on noin kuusi kiloa.

Kuten sanoin, ei siinä mitään ole pielessä. Kaikilla alustoilla ei ole mahdollista käyttää jaettua C++-kirjastoa (esim. Cygwin), jolloin overheadia tulee aina noin paljon. Jos MOSsilla voi käyttää jaettua kirjastoa tutki dokumentaatiota ja etsi tarvittavat switchit.

 

itix
Tiistaina, 5. lokakuuta, 2004 - klo 12.50:   
MorphOS:lle ei ole jaettua kirjastoa.

 

JPQ
Tiistaina, 5. lokakuuta, 2004 - klo 13.30:   
Vaikuttaa tällä menolla jos tuo mainittu koko (jos joku voi vahvistaa
että tuo on oikea koko...) on oikein niin jätän C++:san rauhaan
ainakin pikkuprojekteissani.

 

miksuh
Tiistaina, 5. lokakuuta, 2004 - klo 14.34:   
Jon: Jep linkatessa toki.

 

miksuh
Perjantaina, 15. lokakuuta, 2004 - klo 15.43:   
Muuten tuli mieleen yksi asia, kun tosta exen koosta oli kyse.

Yleisesti PPC sama ohjelma PPC koodina on paljon suurempaa kuin m68k koodi, ohjelma saattaa olla jopa tuplasti niin iso PPC exenä.

Toi on täysin normaalia ja johtuu siitä, että PPC on RISC prossu ja siksi yksinkertasetkin operaatiot vaatii useampia konekielikäskyjä, mikä taas kasvattaa exen kokoa.

Toi ei tietenkään selitä kokoeroa c ja c++ ohjelman välillä, vaan siihen liittyy noi kaikki aikasemmin ketjussa mainitut jutut.

Mutta siis ei voi sanoa että PPC kääntäjä tekis huonompaa koodia, kyseessä vaan on RISC prossun käskykannasta johtuva juttu.

 

miksuh
Perjantaina, 15. lokakuuta, 2004 - klo 15.44:   
Eikä siis oikeen kannata ihmetellä miksi esim Sas/c.llä tehty m68k exe on pienempi kuin GCC:llä tehty PPC exe.

 

antime
Perjantaina, 15. lokakuuta, 2004 - klo 16.12:   
Väittäisin että m68k:n ja PPC:n kokoerot johtuvat enemmin PPC:n kiinteän pituisista käskyistä. Toki käskykannallakin voi olla merkitystä, mutta PPC:llä ei niin paljon kuin MIPSillä, ARMilla ja muilla "puhtaimmilla" RISCeillä (huom: täyttä mutua).

 

miksuh
Perjantaina, 15. lokakuuta, 2004 - klo 16.24:   
Niin joo toi voipi pitää paikkansa, en tunne PPC:tä niin tarkkaan että osaisin sanoo kumpi vaikuttaa enempi.

 

Jupp3
Perjantaina, 15. lokakuuta, 2004 - klo 18.08:   
Ja toinen exen kokoon vaikuttava tekijä on tietenkin se, että muistia voi vain lukea ja kirjoittaa (esim. loogista operaatiota ei voi tehdä muistipaikalle kuten CISC-prosessoreilla)

Lisää viestisi tähän
Viestisi:
Käyttäjätunnus: Postitus informaatiota:
Tämä on yksityinen keskustelupalsta. Vain rekisteröidyt käyttäjät ja moderaattorit voivat postittaa tänne.
Salasana:
valinnat: Aktivoi URL:t automaattisesti tässä viestissä
Toimenpide: