Kompilator

0

Wpadlem na dosc ciekawy pomysl:) Nie wiem tylko jak sie za to wszystko zabrac. Chodzi mi o to zeby samemu napisac komilator. Nie mowie o jakims super komilatorze, takim jak do delphi, c++ czy jakims innym. Moze on miec bardzo malo opcji.
wydaje mi sie, ze na poczatku trzeba:

  1. wybrac jezyk do napisanie tego kompilatora.
  2. dowiedziec sie czegos o plikach EXE (budowa i takie tam).
  3. skladnia nowego jezyka.

Czekam na odpowiedzi.

0

Musisz:

  1. wybrac jezyk do napisanie tego kompilatora.
  2. dowiedziec sie czegos o plikach EXE (budowa i takie tam).
  3. skladnia nowego jezyka.

Pozdro.

0

Tylko gdzie to <ort>znaleŹĆ</ort>?? Tak wiem na www.google.pl:) A tak dokladniej?? Moze ktos zna ktos jakies dobre strony??

0

1 i 3 jest chyba do wymyslenia, co do 2 to np:

http://www2.asw.cz/~kubecj/afmtexe.htm

i ogolnie

http://www.google.pl/search?q=exe%2Bfile%2Bformat

0

Chyba gosciu naprawde nie wiesz co to jest pisanie kompilatora ;], myslisz ze znajomosc binarek i skladni wystarczy :> ?? Hmm nie chce nic mowic ale wymiekniesz przy samej teori optymalizacji i np: parsowanie ukladow dzialan arytmetycznych. Co do C++ to lepiej nawet sie nie zabieraj bo i tak nic z tego nie wyjdzie :P

0

Mi chodzi o naprawde ubgi kompilator. Wazniejsze dla mnie jest umiejetnosc zrobienia jakiegos exeka. Wystarczy, jak bedzie mozliwosc wyswietlenia tekstu, wczytania czegos z klawiatury. ewentualnie <ort>puzniej</ort> cos dodawac.

0

To zacznijmy od podstaw: jak dobrze znasz assemblera?

0

Jezeli naprawde chcesz sie za to brac to polecam Kompilatory. Reguły, metody i narzędzia , autorzy to: Aho Alfred V., Sethi Ravi, Ullman Jeffrey D. I lepiej wypozyczyc bo troche droga :-(

0

Jakie wydawnictwo?? jak mozesz to daj linka do strony wydawnictwa??

0

Jakie wydawnictwo?? jak mozesz to daj linka do strony wydawnictwa??

http://www.wnt.com.pl/wnt/ksiazki.nsf/uid/020128145235wBAMR56TJAF?OpenDocument

Tylko 160 zł:)

BTW// To najdrozsze wydawnictwo z jakim sie spotkałem!! ;-(

0

Moze jakis e-book? :-)

0

E-booki to ty w pdfie znajdziesz, ale - mogę Ci zagwarantować - nie będą one genialne, i nie będą w nich dostatecznie wyczerpujące temat rozdziały :) Dlaczego? Ebooki zazwyczaj są jedynie fragmentami orginalnych książek, które jedynie mają zachęcić do kupna ów książek, które /o takiej tematyce/ zbyt tanie nie są :) No, chyba, że zeskanowane jakieś znajdziesz, ale tego nie polecam ;-) Pozdrawiam [cya]

0

Witam heheh tak sie zlozylo ze nie dawno pisalem dla jezyka D (jezyk wyymyslony dla potrzeb wykladu na UWr) polecam skrypt do programowania Pana ToMasza Wierzbickiego www.ii.uni.wroc.pl/~tomasz

i ksiazke "Kompilatory. Reguly metody i narzedzia" Aho , Sethi Ullman
Niestety napisanie kompilatora dla jezyka ktory jest uzywany w praktyce jest dlam zwyklego programisty wybitnie trudne poniewaz sa one niezwykle zlozone na poczatek polecam napisanie dla ww jezyka D jego semantyka i skaldnia abstrakcyjna jest szczegolowo opsana w tym skrypcei

pozdrawaim i zycze powodzenia :)

0

Zerknij tutaj:
http://4programmers.net/view.php?id=254
Jezeli potrafisz roszerzyc ten kalkulator o wlasne wymyslone funkcji i rozumiesz zasade jego dzialania, to juz jestes na dobrej drodze. Pozniej zerknij do wspomnianej wczesniej ksiazki i sprobuj napisac jednoprzebiegowy kompilator asm (poczatkowe rozdzialy ksiazki). Jezeli i z tym nie bedziesz mial problemow, to mozesz sie brac za tworzenie gramatyki...
Jezeli chcesz wykorzystac juz istniejacy jezyk (bo tworzenie gramatyki od 0 jest strasznie pracochlonne...) to odradzam C (a tym bardziej C++). Juz lepszy jest pascal (i to jedynie w wersji podstawowej). Jednak do eksperymentow polecam fragmencik gramatyki znajdujacy sie na koncu wspomnianej wczesniej ksiazki (A.S.U....). Aby na poczatku ulatwic sobie robote mozesz skorzystac z narzedzi typu lex i yacc.
Co do wersji w pdf-ie, to akurat ta ksiazke mam i to kompletna, ale... przesylac jej nikomu nie bede, bo by to trwalo wieki (duzo zajmuje). Proponuje skorzystac z biblioteki.

0

Po pierwsze polecam program ParserBuilder do zbudowania parsera.
Po drugie nie polecam zaczynac od x86 bo to bardzo skomplikowana architektura. Najpierw napisz translator do C albo do maszyny wirtualnej, a jak juz bedziesz wiedzial z czym to sie je przepisz go jako natywny kompilator.

0

a może spróbuj tak... napisz sobie pusty program np. w delfinie( WINApI), potem, zobacz jak kod asemblera będzie się zmieniał z dodawaniem nowych pierdołów... w końcu uzyskasz kod asemblera, który odpowiada funkcjom np. delphi i będziesz swój język tłumaczył na podstawie obserwacji na asma i kompilował :) Dobry plan?? Potrzeba tylko kompilatora i disasma :) [diabel]


po namyśle stwierdzam, że możessz się posunąć dalej i analizować kod maszynowy np. hexie :>

0

Kompilacja odbywa się na systemie binarnym :) Pierwsze 4 bity licząc od lewej, to bity rozkazu, następny Bit to rozmiar argumnetów 0 <- operacja na bajtach, 1 <-operacja na słowach; kolejne 3 bity to bity rejestru, przydatna tabelka :

Reg w=0 w=1
000 AL. AX
001 CL CX
010 DL DX
011 BL BX
100 AH SP
101 CH BP
110 DH SI
111 BH DI

Rozkaz mov AX, 1234h zapiszemy tak: DB 10111000b, 34h, 12h i tyle :)
Polecam śledzenie dowolnego debugera, chociaż by tego windowsowego w command nazywa się debuger.exe jak by ktoś nie wiedział.

Kiedy go włączysz wpisz:
E 100 B8 ; czyli 10111000 binarnie
E 101 34
E 102 12
A następnie:
U 100
To jest disasemblacja, zobacz jaki rozkaz otrzymałeś na początku, czyżby się zgadzał ?? :)
Reszte odkryj sam bo to nie jest artykuł żebym się rozpisywał <lol>

// Napisz o tym arta [mf]

0

A masz może gdzieś algorytm? przydałby mi się :d

0

Heh.. nie mam żadnych algorytmów wszystko jest na bazie własnych obserwacji :) tzn. w Debug.exe wpisuje jakąś komendę np. mov ax,1234h i disasembluje. W ten sposób wiem jaki kod ma dana operacja, i zapisuje ją na system binarny zmieniam jakieś bity i wpisuje w pamięć ?poprawiony? kod operacji. Znowu disasembluje i oglądam zmiany <lol> i tak do oporu aż wyłapie pewne zależności, niektóre z nich zapisałem powyżej

0

Heh.. nie mam żadnych algorytmów wszystko jest na bazie własnych obserwacji :) tzn. w Debug.exe wpisuje jakąś komendę np. mov ax,1234h i disasembluje. W ten sposób wiem jaki kod ma dana operacja, i zapisuje ją na system binarny zmieniam jakieś bity i wpisuje w pamięć ?poprawiony? kod operacji. Znowu disasembluje i oglądam zmiany <lol> i tak do oporu aż wyłapie pewne zależności, niektóre z nich zapisałem powyżej

hehe pamietam ze tez tak robilem ;> hehe mialem cala sciane poklejona kartkami z zapisem mnemonicow bitowo lub w hexa ;ppp
ale podobno (tj na 100% ;p) istnieje cos takiego jak "dokumentacja procesora" ;ppp i tam sa wszystkie mnemonici ladnie na bity juz rozbite.. wystarczy poszukac na ftp'ie intela ;>

a co kompilatora: kompilator asma to prosta sprawa, wiec od tego dobrze by bylo zaczac.. ;> nie trzeba sie z parserami meczyc (bo proste sa) ;> i <ort>w ogóle [za ten błąd kiedyś urwę Ci jaja]</ort>;>

0

ja teraz w prerwach między pisaniem próbnych progów analizuje kody hexdecymalne plików com... jak chcesz to możemy wejść w współpracę

0

A pisanie kompilatora i interpretatora języka interpretowanego?

W tym celu może wystarczyć napisanie interpretatora ASM, interpretowanego przez procesor lub inny interpretator ASM.

Może to mieć ciekawe możliwości ograniczone czasem, procesorem i pamięcią.

0

wlasny jezyk skryptowy (interpretowany) jest najlepszym rozwiazaniem - sam juz taki napisalem - www.SlashScript.up.pl

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