Własny kompilator

0

Witam. Mam taką prośbę. Może ktoś pisał kiedyś własny kompilator :) ??. Wiem że troche dziwne pytanie ale musze napisać właśnie taki własny kompilator. I zna ktoś może jakieś stronki w necie które mi w tym pomogą. Wiem że nie jest łatwe zagadnienie. chcĘ wiedzieć choć troche ... przynajmniej jak to zacząć bo wiem ze to będzie baaaaaardzo długi projekt. Szukałem troche w necie ale widać albo nieumiejętnie albo umiejętnie i tego w necie nie ma za wiele po prostu. No więc może ktoś ma w tym temacie jakieś doświadczenie i może mi w jakiś sposób pomóc ??.Pozdro

0

Analizuj to :
http://lua.org
lub kompilator z javy -> open source ;)

1

Wlasny kompilator czego? Brainfucka? Ogolnie radze zarzucic pomysl bo widac ze nie masz wystarczajacej wiedzy. Nawet nie wiesz jak do tego podejsc. Bez bardzo dobrej znajomosci asma sie nie obejdzie. Maksimum co mozesz zrobic to interpretator jakiegos jezyka skryptowego.

1
Faszczu napisał(a)

Wlasny kompilator czego? Brainfucka? Ogolnie radze zarzucic pomysl bo widac ze nie masz wystarczajacej wiedzy. Nawet nie wiesz jak do tego podejsc. Bez bardzo dobrej znajomosci asma sie nie obejdzie. Maksimum co mozesz zrobic to interpretator jakiegos jezyka skryptowego.

od dobrego interpretera do kompilatora droga nie jest daleka ;)

0

No nie gadaj, interpretowany to pikus, nie trzeba tykac kodu maszynowego zeby zrobic binaria a do tego juz potrzeba wiedzy.

0

No więc tak.

Wlasny kompilator czego? Brainfucka? Ogolnie radze zarzucic pomysl bo widac ze nie masz wystarczajacej wiedzy. Nawet nie wiesz jak do tego podejsc. Bez bardzo dobrej znajomosci asma sie nie obejdzie. Maksimum co mozesz zrobic to interpretator jakiegos jezyka skryptowego.

Więc tak ... na razie potrzebny mi będzie skaner i do tego analiza leksykalna.Nie wiem czy dobrze mówie ale mam nadzieje ze sie nie myle w nazwach. A tak <ort>w ogóle</ort> to patrzyłem że ten ASM jest pod turbo pascala ... choć pod Devc++ też chodzi ale coś mi błędy wyświetlało. ort! poczytać więcej bo jestem totalny beton w tym asemblerze.

0

I dlatego nic nie zrobisz bo nie wiesz o czym mowisz.

0
Faszczu napisał(a)

No nie gadaj, interpretowany to pikus, nie trzeba tykac kodu maszynowego zeby zrobic binaria a do tego juz potrzeba wiedzy.

czyzby? ja bym powiedzial ze wlasnie gramatyka jest najwiekszym problemem bo jezeli masz juz to to konwersja np: poprzez dodatkowy interptreter bytecode czy kompilator asma nie jest juz tak straszna

0
cepa napisał(a)
Faszczu napisał(a)

No nie gadaj, interpretowany to pikus, nie trzeba tykac kodu maszynowego zeby zrobic binaria a do tego juz potrzeba wiedzy.

czyzby? ja bym powiedzial ze wlasnie gramatyka jest najwiekszym problemem bo jezeli masz juz to to konwersja np: poprzez dodatkowy interptreter bytecode czy kompilator asma nie jest juz tak straszna

A ja zgodzę się z Faszczu (Faszczem ;) ). Owszem implementacja gramatyki języka (a dokładniej zbudowanie dobrego parsera) może nie jest najłatwiejsze (chociaż do najtrudniejszych też nie należy - przecież nie trzeba Od razu budować kompilatora języka obiektowego czy jakiś makro asembler - można zbudować kompilator właśnie Brainfucka ;) ) ale dużo <ort>prostrze</ort> od budowania binarek. Budując kompilator po pierwsze trezba znać asembler procka pod który się pisze, system operacyjny pod który się pisze, nie mówiąc już o budowie pliku binarnego (poszczególne segmanty, relokacje itd.). Przy interpretatorze znajomość taka nie jest konieczna - no chyba że interpreter wywołuje specjalne funkcje systemu np. okienka w windows.

Ale ciekawym rozwiązaniem może być "pseudo kompilator". Działa to na podobnej zasadzie jak dawny Visual Basic (dawny bo nie wiem jak jest z obecnymi wersjami). Skompilowany exe w takim basicu to nic innego jak "uniwersalny" plik wykonywalny do którego dołączony jest kod programu tyle że nie w postaci źródłowej, a już przygotowanej do interpretacji (taki kod ma specjalną nazwę ale teraz nie pamiętam jak się nazywa - często nazywa się go kodem pośrednim).

// bytecode - Q?

0

mczarny ~ system operacyjny? budowa pliku binarnego? O czym ty mowisz? Chodzi o kompilator, a kompilator tworzy pliki obiektowe (wynikowe, z segmentami, relokacjami itp, jak to nazwales tworzy linker), na upartego moze tez tworzyc kody zrodlowe asma ktore potem mozna potraktowac jakims asemblerem (ja tak robilem w moim z, czy jak mu tam bylo). Poza tym struktura PE, Coff'a, elf'a itp nie jest wcale taka skomplikowana (zwlaszcza przy jego tworzeniu), wystarczy tylko poczytac troche dokumentacji.

Pisalem swoj kompilator (tani bo tani ale byl), pisalem swojego OSa (j/w) i wiem co mowie - parser to najwiekszy problem (pominajac oczywiscie gotowe narzedzia typu LEX/YACC, moze MS albo Borland zrobi jakiegos czarodzieja niedlugo :P).

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0