Prosty kompilator

0

Mam takie pytanko : zna ktoś może jakieś materiały o tworzeniu aplikacji? Ale nie mówię o pisaniu aplikacji, tylko np. napisaniu własnego kompilatora :P. Bo jak dotąd stosowałem metodę że piszę szablonowego execa (który wczytuje z siebie samego skrypt) , a innym programem kopiuje szablon do nowego pliku i zapisuje na końcu skrypt do wykonania... Ale przez to exec jest zawsze tak samo duży... A chciałbym uzyskać taki efekt, jak w PRAWDZIWYCH kompilatorach, tzn. ze wielkosc programu jest zalezna od jego zawartości, wykonywanych operacji etc.

0

To zależy czy chcesz tworzyć język i mieć nad nim kontrolę czy chcesz się oprzeć n innych językach (np. Pascal).

Kompilatror to nic innego jak program przetwarzający STRINGI. Jeśli chcesz wiedzieć dokładnie, co się dzieje w komputerze, to radzę zrobić tzw. kompilację bezpośrednią, czyli:

twój_język ->[twój kompilator]-> asembler ->[kompilator asemblera, np.Turbo Asembler]-> kod wykonywalny

Możesz też dołączyć do swojego kompilatora np. Turbo Pascala i tłumaczyć to tak:

twój_język ->[twój kompilator]-> pascal ->[kopilator pascala]-> kod wykonywalny

Krótko mówiąc, musisz zrobić taki łańcuszek. Konieczne jest posiadanie jakiegoś innego kompilatora (chyba że umiesz pisać programy od razu binarnie :D ).

Więcej pytań? chętnie pomogę! Pisz: [email protected] .

0

Prosty i kompilator - te słowa do siebie kompletnie nie pasują !

Aby móc napisać nawet najprostszy z możliwych kompilator musisz bardzo dokładnie znać strukturę plików EXE i assemblera.
A to jest zajęcie na wiele, wiele, wiele tygodni.
Oczywiście mówię tu o rzeczywistym kompilatorze, a nie o jakichś tam skryptach dodawanych do pliku skompilowanego np. w Delphi.

0

Prosty - miałem na myśli coś innego niż np. Delphi 2005 - choćby na sam początek załapać jak zapisać w .com taki na przykład kod asm :

mov EAX,EBX
xor EBX,EDX

i wlasnie się was pytam czy ktoś zna dokumentację struktury com etc.

Bo jak dotąd znalazłem tylko taki programik Inno Pascal czy jakoś tak (na stronce Inno Setup Complier) i tam faktycznie jest ciekawa sprawa, bo programik KOMPILUJE prawdziwego execa (nie tą tandetę co ja robiłem ;P) z odwołaniami do funkcji z biblioteczek... Tylko chciałbym to lepiej przestudiować

0

Podstawowe rozkazy x86:

http://www.sandpile.org/ia32/opc_1.htm
http://www.sandpile.org/ia32/opc_2.htm

a co do

mov eax, ebx
xor ebx, edx

to

f?Řf1Ó
w ascii

0x66 0x89 0xD8 0x66 0x31 0xD3
w hexie

0

haha...........a jak zrobić kompilator, którego użycie pozwoli na storzenie programu nie zależnego od procesora, sprzętu, systemu operac.(ograniczmy się do windowsów). Może i różnica nie wystąpi w całości kodu, ale zawsze.

// proponuję żarliwą modlitwę, bo dziwnym trafem wykonywany kod jest albo zależny od procesora, albo nie jest prawdziwym kodem (->java, byte code) - Ł

0

"Kompilatory, reguły, metody i narzędzia" - Aho, Seti, Ullman.
Najpierw przeczytaj, potem myśl o prostym kompilatorze.

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