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. |
|
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?
|
|
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 ;> |
|
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 |
|
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. |
|
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. |
|
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. |
|
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. |
|
1 « 2 » 3 4 |