Wolverine napisał(a)
fopen(), fwirte(), fclose().
Masz jakis konkretny problem? Format pliku PE znajdziesz na google, format opcodow do x86 w manualach Intela, format syscalli Windowsa pewnie na MSDNie. Powodzenia <bardzo ironiczny="ironiczny" glos="glos">.
LesioGames napisał(a)
Chodzi o 32 bitowy
[rotfl]
LesioGames napisał(a)
Wiem co to Parser, Linker itp. Chodzi o to że chcę napisać własny język programowania. Tak naprawde mam już prawie cały zrobiony ale brakuje kompilatora. Jak zrobic żeby tworzył plik wykonawczy? itp. ???
lol, 'prawie' cały :D. Nie wiem czy wiesz ale kompilator to 'prawie cały' język. Opracowanie gramatyki nie jest problemem, napisanie kompilatora /w szczególności języka kontekstowego/ już tak. Kompilator z założenia nie tworzy 'plików wykonawczych'. Proponuję zapoznanie się z formatami COFF/MS COFF i użycie standardowego linkera masm'a /ogólnie VS - link/ lub gcc\MinGW /ld/. Te dwie wersje formatu różnią się głównie formatem relokacji. Inna sprawa, że języka programowania się nie pisze - gramatykę się opracowuje i implementuje w narzędziach. Z pisaniem kompilatora to może poczekaj jeszcze kilka lat, sam sobie odpowiedz czy jesteś chociaż w stanie napisać algo budowy drzewa wyrażeń dla chociażby najprostszego języka.
Opisów formatu COFF jest w teletubisia i troche... Z manuali Intel'a to tak - 2A i 2B to dokładny opis instrukcji + mapy opkodów, z 1 i 3 przynajmniej należy przerobić tryb chroniony, wyjątki, debugging... no, informacje dla twórców systemów operacyjnych i kompilatorów oczywiście też. Jak już kompilator będzie w stanie wygenerować chociaż działający kod to następną lekturą będzie ostatni z manuali - nt. optymalizacji.
A poważnie to dowiedz się co to Flex i Bison, poczytaj legendarną 'knigę ze smokiem' /jeżeli faktycznie wiesz coś o pisaniu kompilatorów to doskonale wiesz o jaką książkę chodzi, jest tylko jedna taka :>... omg, pdf mi się stracił przy ostatnim padnięciu HDD :/ /. Poprzeglądaj kompilatory open-source, zrób najpierw własną zabawkę w oparciu o gcc jeżeli chcesz iść na łątwiznę.
@Wolverine, syscall'e na Win są zależnie od wesji - z każdym SP zmianiają się numery funkcji więc użycie native api w ten sposób będzie przypominało bindowanie. Hm... ale to taki zły pomysł nie jest :> Problemem pozostaje ustalenie numerów funkcji, patch kodu to przecież nie problem... tylko czy jest sens?
@LesioGames, powodzenia w pisaniu kompilatora... jeżeli faktycznie tego chcesz i jesteśw stanie podołać :-)
p.s. ech Wolverine mnie uprzedził nieco :-)