Ajattelin alkaa tekemään jotakin, alkajaisiksi hyvin yksinkertaista kääntäjää. Neuvoisiko joku jonkun linkin tai jotain, että mitä siihen exeen pitäisi laittaa...
Ihanan helppoja projekteja sulla!
Vähän aikaa sitten täällä pyöri headache-niminen projekti ja kyseisen projektin keskustelussa mainittiin linkki http://mirror.href.com/thestarman/asm/index.html. Kokeile tutkia sieltä.
Moikka Juhko!
Tahtoisin ihan mahdottomasti tietää, että meinaatko alkaa toteuttamaan omaa
.NET -kieltä ja sille kääntäjää vaiko periteisempää assembleriä?
Sanotaan jo alkuun, että hyvää suomenkielistä materiaalia tuskin tulet löytämään (en tosin kokeillut).
Itse PE-formaatin speksin saa tällä hetkellä nähtävästi ladattua osoitteesta http://www.microsoft.com/whdc/system/platform/
Huomattavasti selkeämpi kaavio kuitenkin näyttäisi olevan täällä:
http://www.openrce.org/reference_library/files/
Noista voit päätellä, että jo formaatti vaatii melkoista säätämistä. Sen lisäksi pitäisi saada aikaan konekielistä koodia, jota varten on järkevintä ensin kääntää koodi jonkinlaiseksi assemblyn tapaiseksi sisäiseksi formaatiksi. Ei siis kokonaisuudessaan mikään aivan pieni temppu. Ehkä lähes realistinen tavoite voisi olla tuo aivan ensimmäinen vaihe, siis kielen kääntäminen konekieleksi. Tästä voisi sitten jatkaa ohjelmaksi jollakin valmiilla assemblerilla (GNU/as tai NASM).
Mitä vikaa nykyisissä olemassa olevissa kääntäjissä sitten on jos kerran uutta pitää ruveta tekemään? Eikö olisi helpompaa etsiä jokin avoimen lähdekoodin kääntäjä ja korjata siitä mahdollisesti löytyviä luteita?
JUHKO P**KELE!
No jaa, tässä tulisi tietää, että minkä tyyppistä kieltä yrittäisit toteuttaa. Osaatko x86:n assembler-kieltä? Se lienee hyödyllistä. Itse yritän tehdä (vasta idea) xml-tyyppistä kieltä, jolla olisi helppo säätää yksinkertaisia pelejä. Kääntäjäsysteemi tulisi kääntämään moskan c-kielelle, ja kiduttamaan gcc:tä.
Minä varmaan tekisin ensin DOSin COM-ohjelmia, sillä niihin voi kirjoittaa suoraan konekielistä koodia. Eli täytyy "vain" tietää, mistä konekielen komennoista haluttu ohjelma muodostuu, ja kirjoittaa ne tiedostoon. Joskus tarinoin vähän enemmän aiheesta. Ensin täytyy joka tapauksessa opetella konekieltä, jotta tietää, mitä sillä voi tehdä. Sitten täytyy keksiä, kuinka siitä omasta kielestä saa konekieltä. Tietenkin mitä lähempänä oma kieli on konekieltä, sitä helpompaa kääntäminen on.
Niin, riippuu tietenkin kielestäsi. Heksaeditori on helppo tehdä, vaikka se nyt ei mikään kääntäjä olekaan. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.