Pliki EXE

0

Soróweczka za niekonkretne dane(co do języka programowania) ;) .W nim wpisuje się komendy poczym on analizuje je i wykonuje zadania krok po kroku.I w sumie wszystko działa OK, ale chce by te programy nie tylko były zapisywane do pliku .msf(mój format), ale żeby były tworzone pliki exe.No i w tym tkwi problem. Jak zrobić kompilator by tworzyc exe? [rotfl]

0
Ktos napisał(a)

Szczawik podał dobry pomysł - zrób translator na asma i użyj gotowego linkera. W ten sposób działa spora ilość kompilatorów.

Może wyjaśnię Ci trochę kwestię. Pisanie własnego kompilatora (bo jeszcze go nie napisałeś), a do tego linkera jest trudnym zadaniem - zdecydowanie! Zrozumiałem - z tego, co wylądowało w koszu za niedorzeczność - że piszesz język, który na razie działa skryptowo: zapisujesz we własnym formacie i innym programem odpalasz.

Całość możesz zrealizować na kilka sposobów:

  1. Edycja zasobów
    ============
  • kompilujesz sobie programik, wykonujący skrypty, które pobiera z zasobów (pewnie już go częściowo masz) [program A] - pierwotny skrypt wrzucony na sztywno
  • ktoś pisze sobie kod w twoim języku [program B], a następnie "kompiluje" - właściwie nie kompiluje tylko obrabia i podmienia zasób w programie A
  • odpalanie programu A skutkuje tym, że ten z zasobów wyciąga sobie skrypt (teraz podmieniony) i go wykonuje
  1. Prawdziwa kompilacja - wariant A
    ============
  • tworzysz sobie translator twojego języka na asembler (lub inny język)
  • ktoś pisze program w twoim języku, po czym odpala "kompilator" - czyli w gruncie rzeczy najpierw translator na asembler, a potem prawdziwy, cudzy kompilator asemblera, a potem linker - też cudzy
  • ma gotowy kod wynikowy
  1. Prawdziwa kompilacja - wariant B - uproszczony
    ============
  • tworzysz sobie translator twojego języka na asembler i dodatkowo, na przykład w asemblerze, program wykonujący określoną funkcjonalność (dajesz źródła lub plik objektowy)
  • ktoś tworzy w twoim języku program, po czym odpala "kompilator" - translator twojego języka na asembler oraz linker (ewentualnie również kompilator) z twoim programem początkowym, dla którego nowo stworzony kod jest czymś w rodzaju biblioteki lub skryptu (na przykład wrzucanym do zoasobów)
  1. Piszesz własny kompilator i linker
    ============

O tym wariancie raczej zapomnij, bo - jak mówiłem - d** (powiedzmy, że dużo) pracy.

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