Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Tworzenie kompilatora.

Ostatnio zmodyfikowano 2010-12-13 10:00
Autor Wiadomość
Elaine
» 2010-12-10 12:18:03
Każdy kompilator musi tłumaczyć instrukcje danego języka na kod maszynowy.
Nie każdy. Kompilator to program tłumaczący kod w jednym języku na równoważny kod w innym języku - tym "innym językiem" nie zawsze jest kod maszynowy.

I tutaj nie można się obejść bez używania instrukcji specyficznych dla danego procesora.
Ależ bez problemu można - w końcu jedyne, co trzeba z nimi zrobić, to je wyemitować. A te instrukcje to po prostu kupka bajtów jak każda inna.

Czyli trudno byłoby napisać kompilator używając tylko i wyłącznie kodu języka wysokiego poziomu
Mówię - powiedz to gościom od np. GHC. Cały kompilator jest napisany w Haskellu (plus kawałek Perla), bez ani grama asma.
P-24971
TomC
» 2010-12-10 13:18:21
Mówię - powiedz to gościom od np. GHC. Cały kompilator jest napisany w Haskellu (plus kawałek Perla), bez ani grama asma.

Jak więc kod kompilatora języka Haskell napisany w języku Haskell jest zamieniany na kod maszynowy?
Przecież na tym etapie nie można jeszcze użyć kompilatora Haskella?
P-24973
Elaine
» 2010-12-10 13:21:16
Przecież można, jeśli tylko ma się jakiś skompilowany wcześniej. Poza tym, zawsze istnieją jeszcze interpretery ;>
P-24974
Drraven
» 2010-12-10 13:31:14
Nie każdy. Kompilator to program tłumaczący kod w jednym języku na równoważny kod w innym języku - tym "innym językiem" nie zawsze jest kod maszynowy.
Tak może tłumaczyć na c/c++ a potem ten kod ładujesz do gcc/g++ lub innego kompilatora i już xd
P-24976
MrOsamaful
Temat założony przez niniejszego użytkownika
» 2010-12-10 13:48:53
Dziękuję za te jakże interesujące informacje, teoria jest bardzo ważna, tylko jak na razie nie nauczyłem się niczego w praktyce :)

Możecie dać jakieś przykłady, lub może sami coś napiszecie, bo nie za bardzo zamierzam kupować jakieś książki po 160zł, mające już 8 lat.
P-24977
pekfos
» 2010-12-10 15:57:55
daj jakiś kod w tym twoim języku. na podstawie składni można wiele powiedzieć o twoich umiejętnościach. zastanów się czy w ogóle dasz radę bo kompilator to nie to samo co interpreter.
P-24991
szyx_yankez
» 2010-12-10 16:05:44
Najpierw naucz się jak pracuje procesor oraz system pod który piszesz, a następnie tłumacz swój język do postaci kodu maszynowego (binarnego), zapisuj np. do stringa, potem do pliku o odpowiednim rozszerzeniu i masz gotowy plik wykonywalny.
Tak wygląda to w teorii, w praktyce jest znacznie trudniej.
Kolejny co się "rzuca z motyką na słońce", mogę się o kompa założyć, że nie napiszesz kompilatora który wygeneruje choćby program "Hello world".
Ale mimo to życzę powodzenia, przynajmniej doświadczenia trochę zdobędziesz.
P-24993
MrOsamaful
Temat założony przez niniejszego użytkownika
» 2010-12-10 21:22:17
Nie musi to być tłumaczone od razu na maszynowy, może być na c/c++, chodzi mi o to, żeby było to jak najprościej napisane. Czemu wszyscy chcecie tak utrudniać :D

Ktoś prosił o przykładowy program.


i = 0;
while(10 - i)
{
  if i % 2 - 1
    {
write i;
    } 
  i = i + 1;
}
Ze składni podobny do C.
P-25024
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona