Focus Core

Mój pierwszy kompilator
xD Pozdrowienia dla dociekliwych xD

2007-06-30

Uber Language

Przy tworzeniu języka focus core powstaje język do pisania kompilatorów. Jest to ciekawe rozwiązanie oszczędzające bardzo dużo pracy :) (jednocześnie jej nakładające, jednak z pewnością jest to opłacalne). Poza napisaniem dobrego skanera i analizatora składni (w Uber LAnguage) muszę oskryptować dane w IA32_DB. Robota idzie lekko xD. Dlaczego nie użyłem gotowych języków do definiowania składni? Po prostu nie odpowiada mi ich jakość/elastyczność, a ja chcę uzyskać możliwie najlepszy rezultat :). Jeśli Uber Language (mój język do tworzenia języków) spełni moje oczekiwania nie będzie stanowiło problemu zdefiniowanie samego Uber Language w Uber Language xD... A co za tym idzie? Dzięki takiemu rozwiązaniu UL będzie w stanie kompilować kompilatory nie tyle do postaci binarnych, co do innych języków (przykładowo natywny kompilator Pascala w php), niewielkim kosztem (rzędu kilkuset linijek kodu).

Uber Language jest tworzony mniej więcej od ostatniego newsa (23.06.2007) i na podstawie tego co jest muszę powiedzieć, że język w nim pisany jest duuużo czytelniejszy niż źródła Free Pascala, czy jakiegokolwiek innego kompilatora jaki widziałem (może to tylko subiektywne odczucie).

Zwariowane ale prawdziwe :). Jeszcze nie wiem czy udostępnię UL, ale jako rekompensatę postaram się za jakiś czas dostarczyć opis pliku pe exe, a przynajmniej pełnego tutka o tym jak wczytać i wygenerować sekcję importów, oraz zaprezentować jak wyglądają binarnie zapisane instrukcje asemblera (przynajmniej trudniejsze fragmenty związane z adresowaniem pamięci - opisy które znalazłem w internecie czy wyczytałem z książek były niekompletne i musiałem !ręcznie! analizować kody binarne w debugerze delphi...).

2007-06-23

Składnia FocusCore

Pierwsza wersja "Language RoadMap" gotowa :) (kliknij tutaj). Niby nic wielkiego ale jest się czego trzymać. Przede mną sporo roboty ^^. W końcu kompilator, compiler się rodzi ;). New news soon...

2007-06-22

Narzędzie IA32 DB

Aby nie pozostać gołosłownym zamieszczam dzisiaj moją bazę danych odnośnie instrukcji IA-32 (na bazie której wygeneruję kompilator) oraz program do jej przeglądania. Wszystko to (oraz dodatkowe informacje) znajduje się w tym archiwum.

2007-06-20

Focus Core - Własny Kompilator

Nazwa kodowa projektu "Focus Core" jak nazwa wskazuje ma mi przybliżyć działanie kompilatora. Ba :). Nie chodzi tu o czyste dociekanie ale i o stworzenie czegoś funkcjonalnego! Na razie nie będę przedstawiał planów na przyszłość mojego jednoosobowego projektu a jedynie na najbliższą teraźniejszość (lol "najbliższa teraźniejszość" xD).

Jako, że obecne życie mam zdaje się - jedno, postanowiłem 10 razy pomyśleć zanim coś większego zacznę pisać. Zagadnieniem języków programowania jestem zainteresowany od początków mojej kariery ;) programistycznej, i co należy dodać nie jestem w tej dziedzinie zupełnie zielony choć do do dojrzałości mojej jeszcze pod tym względem daleko ^^. Zastanawiałem się sporo czy pokazać to światu i oficjalnie coś pisać - doszedłem do wniosku, że tak. Wreszcie ruszę coś o czym zawsze marzyłem - kompilator i najszybszy skrypt, co pozwoli mi z większą radochą tworzyć inne projekty i umożliwi ich lepszą realizację.

Rezygnując ze zbędnego gadulstwa o mojej przeszłości i o tym co zrobiłem pragnę przedstawić koncepcję "Focus Core". Jako, że bardzo potrzebuję dobrego języka skryptowego postanowiłem na piedestał postawić cel stosunkowo ambitny, mianowicie skrypt typu IA-32. Jako, że od skryptu takiego do kompilatora nie jest już tak daleko przy okazji w ramach rozrywki (ale ze mnie rozrywkowy koleś xD) postanowiłem napisać kompilator.

Focus Core będzie jedynie (jedynie x_X) kompilatorem asemblera (na początek by później w języku który planuję nie było problemu z wstawkami asemblerowymi) z pełnym (a przynajmniej tak mi się wydaje) zestawem instrukcji IA-32 z pewnymi udogodnieniami. Wzorować się będę na asemblerze dostępnym w Delphi (etykiety, sposób zapisu danych czy liczb szesnastkowych z przedrostkiem $ itd.). Dodatkowo będę udostępniać część narzędzi które stworzyłem i stworzę, oraz przydatną dokumentację czy bazy danych (jako taką definicję języka który piszę postaram się dostarczyć do końca tygodnia).

Jako, że... Mam przykre doświadczenie z ręcznym wklepywaniem kodów maszynowych z dokumentacji i nie mam wsparcie ze strony Intela czy M$, początkowo postanowiłem sobie ułatwić zadanie i na podstawie dokumentacji wygenerować bazę danych na podstawie której wygeneruję kompilator :D.

Będą starał się sumiennie prowadzić tego bloga notując konsekwentnie moje postępy. Dodając co nieco, co kilka dni. Strona ta powstała jako auto-motywacja i kopniak do dalszego działania, która ma mi pokazać co już zrobiłem i co jeszcze mi zostało do zrobienia.

PS. Czekam na komentarze (nawet krytyczne ;( ), opinie i sugestie, będące niewątpliwie bodźcem do działania :)