Focus Core

Mój pierwszy kompilator
xD Pozdrowienia dla dociekliwych xD

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 :)

7 komentarzy:

Anonimowy pisze...

Dobra, chciałeś negatywny komentarz, no to masz :] Co Ci po tym, że napiszesz sobie w Delphi jak nie przeniesiesz tego potem na inne platformy :> Trzeba myśleć przyszłościowo :]

Anonimowy pisze...

Jezusie nazarejski!! Jason... a cos ty sie tak uczepil tej wielo platformowosci?! glownie kodzi sie dla wlasnej przyjemnosci!

Anonimowy pisze...

Kyrie Eleison xD! Niezle, serio zycze powodzenia :) A Windows jest beeee bo nie jest multiplatformowy :P

Anonimowy pisze...

Jak to ? Programista pracuje dla innych :] Gdzieś widziałem taką zasadę, że programu się nie pisze tylko dla siebie... A jakby było wieloplatformowe to zaawansowani użytkownicy komputerów (czytaj użytkownicy Linuxa) też by mogli skorzystać ]:->

Maciej Izak pisze...

Wersja skryptowa powinna działać na Linuxie (FPC ;]). Format PE mam przestudiowany a o formacie plików wykonalnych na Linuchu nie mam pojęcia :> (jak chcesz poczęstuj linkami ;P). Myślałem o innych platformach i formatach ale nie wiem czy mi życia starczy ;P (bądź co bądź przestudiowanie dokumentacji trochę trwa). Na razie FocusCore EXE tylko dla Win32 a FocusCore Script powinien działać na Linuxie i Win32.

Anonimowy pisze...

Jason... Powiedz mi jedno... jezeli az tak bardzo upierasz sie przy tej multiplatformowosci to czemu nie piszesz w javie? Przeciez cep nie jest az tak bardzo multiplatformowy jak java.

Anonimowy pisze...

Tak, powinienem zacząć tworzyć we flashu bo też jest wieloplatformowy...
wiesz co :D... nie podoba mi się Java i jest trochę mniej wydajna, przez swoją większą wieloplatformowość. C++ to optymalne rozwiązanie :]