Vbcc:n startup.o:n lähdekoodit

Saku-foorumi » Classic Amiga » Ohjelmointi » Viestit 2005 » Vbcc:n startup.o:n lähdekoodit « Edellinen Seuraava »

Kirjoittaja Viesti
 

allu
Perjantaina, 30. syyskuuta, 2005 - klo 19.42:   
Ajattelin käyttää vbcc:tä kääntäessäni CPU32(=68020) koodia. Mutta koska kyse on sulautetusta prossusta, tarvisin startup.o:n lähdekoodit. Sekä pieni kutina on että myös vc.lib:in ja amiga.lib:in sorsia olisi hyvä vilkaista.

Jos joku tietää mistä noi sais tai vastaavanlaiset niin kuuntelen mielenkiinnolla.

 

Jon
Perjantaina, 30. syyskuuta, 2005 - klo 19.51:   
Frank Willeltä?

 

allu
Perjantaina, 30. syyskuuta, 2005 - klo 20.01:   
Jon: Juu, kysyin jo mutta ei tunnu vastausta kuuluvan ja kun hiukan kärsimätön olen niin....

Lieneekö sähköposti mennyt perille. Käytin osoitetta frank at phoenix dot owl dot de. Onko oikea?

 

Jon
Perjantaina, 30. syyskuuta, 2005 - klo 20.23:   
Vastaisikohan Volker Barthelmann nopeammin?

 

allu
Perjantaina, 30. syyskuuta, 2005 - klo 20.44:   
Taidan odotella vielä päivän, ehkä pari. Jaksa alkaa pommittaan. Ei tässä oikeasti niin kauhea kiire ole. Sitäpaitsi ymmärsin että Frank on kirjoittanut nykyisen startup.o:n.

Katselin Developer CD2.1:stä ja sielläkin startup.asmeja oli aika liuta. Mikähän niistä mahtais olla kaikista yksinkertaisin? En oikeastaan tarvitse kuin korkeintaan c-initteihin liittyvän. Jos niitäkään edes startup.o:hon on laitettu.

Mahtaiskos joku tietää kuinka vbcc hoitelee initit? Tää on hiukan uusi alue meikäläiselle vaikka oon omankin c-kääntäjän värkänny :D.

 

itix
Lauantaina, 1. lokakuuta, 2005 - klo 13.21:   
Meinaatko con/destructoreita? Amiga SDK:n startupit eivät niitä tunne.

 

allu
Lauantaina, 1. lokakuuta, 2005 - klo 14.22:   
itix: en kai, kuulostaa c++:n hommeleilta. Tarkoitan näitä c:n käyttämiä muuttujien initointeja. Pelkistetyimmillään se ei koostu muusta kuin staattisten muuttujien nollauksesta ja lähdekoodissa käytettyjen vakioiden kopioimisesta oikeisiin muuttujiin ennen ohjelman käynnistymistä. Tosin voidaan noi toimet muutenkin hoitaa ja siksi kiinnostaiskin tietää miten vbcc asian hoitaa. Pinon alustus myös kiinnostaa.

No mä laitan tähän ihan sen homman mitä haluaisin tehdä. Jos se auttais kaikkia miettimään ratkaisua siihen.

Käytännössä käännän ohjelman ja linkkaan sen kiinteään osoitteeseen. Lisäksi keskeytys-, stack-, reset- ja vbr-vektorit pitäisi saada osoittamaan lähdekoodeissa tai linkkeriskripteissä määriteltäviin osoitteisiin. Sekä ohjelmassa käytetyt staattiset muuttujat täytyy saada alustettua.

Ongelma ei oikeastaan ole ton kummempi. Paitsi etten edes tiedä vlinkin skriptin syntaksia.

 

itix
Lauantaina, 1. lokakuuta, 2005 - klo 15.25:   
"Käytännössä käännän ohjelman ja linkkaan sen kiinteään osoitteeseen. Lisäksi keskeytys-, stack-, reset- ja vbr-vektorit pitäisi saada osoittamaan lähdekoodeissa tai linkkeriskripteissä määriteltäviin osoitteisiin."

No tuo tehdään käyttiksessä ei startup-koodissa. VBCC:n AmigaOS-targetti tuottaa relocatable-binääreitä jotka latauksen aikana sijoitetaan johonkin summittaiseen osoitteeseen riippuen siitä missä on vapaata muistia.

Myös staattisten muuttujien alustaminen tehdään AmigaOS:ssa. Startup-koodi hoitaa ainoastaan konstruktorit (esim. C-kirjaston käyttö) ja komentojonoparametrien ym. säätäminen. Mutta eivät ne tuossa sulautetussa systeemissä toimi koska ne käyttävät AmigaOS:n API-kutsuja.

Mutta veikkaanpa että vlinkistä löytyy switchi jolla sen saa tuottamaan absoluuttiseen osoitteeseen linkattuja ELF-executableja.

 

allu
Lauantaina, 1. lokakuuta, 2005 - klo 18.17:   
"No tuo tehdään käyttiksessä ei startup-koodissa"

Ei, kyllä tuo täytyy saada tehtyä startup:issa koska mitään käyttistä ei vielä ole.

"Myös staattisten muuttujien alustaminen tehdään AmigaOS:ssa"

Juu, tuollain mä hoidin homman omassa kääntäjässäni. Exe:n latausvaiheessa laitetaan referenssit kohdilleen. Mutta sulautetussa koodissa näin ei voi tehdä koska muuttujat sijaitsee rammissa ja niiden inittiarvot rommissa. Joten sisällöt on kopioitava oikeisiin paikkoihin ennen ohjelman käynnistystä. Ainoastaan const muuttujiin voidaan tehdä latausvaiheessa viittaus joka osoittaa rommiin. Ja huom, latausvaihe on käytännössä s19-imagen luonti.

"Mutta veikkaanpa että vlinkistä löytyy switchi jolla sen saa tuottamaan absoluuttiseen osoitteeseen linkattuja ELF-executableja"

Juu löytyy. Tosin itsellä on sellainen version vasmista joka ei tee ELF:ejä mutta amiga-hunkit kelpaa vlinkille yhtä hyvin. Ja vlinkissä on yhtenä output-moduulina s19-muoto. Mutta se linkataan 0x00000000 osoitteeseen ilman linker-skriptiä.

 

Piru
Lauantaina, 1. lokakuuta, 2005 - klo 20.12:   
@allu

No et tule löytämään mitään noista jutuista vbcc:n startup-koodista.

 

allu
Lauantaina, 1. lokakuuta, 2005 - klo 21.42:   
Piru: No perkale. Tarkoittaako kommenttisi että c-initeistä ei tarvi välittää koska vbcc generoi valmiit pätkät objekteihin(mihin niistä?). Vai tarkoitatko että koko homma ei ole mahdollinen vbcc:llä? Vai tehdäänkö koko homma jossain muualla kuin startup:issa?

No, c-initit olis aika tarpeelliset mutta kaiken muun pystyy tekemään myös c:n puolella. Kunhan vaan muuttujien sijoittelun pääsee vapaasti määrittelemään.

Eli, rajataan avunpyyntöä hiukan. Nyt en tarvitse apua kuin linker skriptin kirjoitukseen. Loput voi hanskata c:llä ja inline asmilla.

ps. Kyllä tää tästä alkaa selkiämään kun vaan vatkaa ja veivaa:).

 

Piru
Sunnuntaina, 2. lokakuuta, 2005 - klo 1.12:   
Hommat tehdään muualla, lähinnä käyttiksessä.

Pelkistettynä: startupissa käsitellään WBStartup/parsitaan komentoriviparametrit, ajetaan mahdolliset constructorit, kutsutaan itse main()ia, ja ajetaan destructorit, ja cleanupitaan.

Objektien lataaminen, relokkaaminen ym. judanssit tehdään ihan muualla, käyttiksessä (käytännössä LoadSeg() kutsuttuna joku shellistä tai Workbenchistä).

Jos tarvitset jotain tuollaisia niin ne on tehtävä ihan itse, ja vbcc:n startup.o ei tule sinua auttamaan.

 

allu
Sunnuntaina, 2. lokakuuta, 2005 - klo 15.00:   
Piru: Asia selvä. Edelleen silti kiinnostaisi nähdä se startup.asm mutta toivotaan että Frank vastaisi.

Ja linker skriptien syntaksi on edelleen hakusessa.

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: