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.
|
|