Dragă Gigaevil, îţi mulţumesc pentru interes.
gigaevil
Eu consider ca posturile mele au fost cat se poate la obiect:
un compilator, inseamna: analiza sintactica, gramatici formale, automate cu stari finite, determinism, gramatici chomsky, arbori de decizie, multe translatoare si dupa aceea inseamna generare cod masina. Intrebarea a fost clara cate dintre acestea exista in program - raspuns nici una.
Într-adevăr, nu am folosit acele tehnici, pentru că nu mi-au folosit. Nu ştiu dacă există deja un termen pentru un astfel de compilator, aşa că eu îl numesc hit-and-run – pur şi simplu traduce fiecare cuvânt, pe rând. De exemplu, pentru a compila următorul cod ( în FORTH ):
1 2 +
la ce mi-ar folosi tehnicile enumerate de tine, când pot pur şi simplu să traduc în:
pushl $1
pushl $2
# +:
popl %eax
popl %ebx
addl %ebx
pushl %eax
?
gigaevil
Din cate am inteles in Aer este un trick, nu poate functiona fara compilatorul de Ansi C, nu poate executa nimic, deoarece el apeleaza functii gata link-editate, din librarile C.
Fals. Aer nu foloseşte compilatorul de ANSI C, ci assemblerul GAS. Eu invoc
gcc -x assembler
pentru că gcc îmi leagă codul de libc, ca să nu mai fiu nevoit să scriu comenzi kilometrice.
gigaevil
Nu am primit nici un raspuns.
Mda, am plecat şi eu pe la munte
gigaevil
Dupa cate inteleg programul se recompileaza pentru ca si C, se poate recompila singur.
Iar fals. Nu are nicio legătură cu natura C-ului.
gigaevil
Fara C nu recompileaza nimic, precum nici C nu poate fi recompilat(self-hosting) fara a avea instalat un compilator de C. Asta am inteles si sunt sigur.
Normal ca daca apelezi o functie, din C si dupa aceea o chemi din Aer aceeasi functie, si te uiti la rezultate ca sunt identice. nu inseamna ca programul tau este o translatare a C-ului. Si normal ca prin aceasta metoda, puteai sa executi orice functie din C, era interesant sa o poti scrii tu, si sa nu o chemi din C, am inteles ca poti apela orice functie din C.
Nu chem funcţiile din C, le chem pe cele din libc.
Am zis să nu reinventez roata. În fond, la ce mi-ar folosi să rescriu ceva precum libc? Orice sistem Linux are aşa ceva, şi cum eu folosesc Linux, am zis să nu mă complic.
Oricum,
http://jafile.com/uploads/deveah/ac.c este incomplet. De la versiunea aia am mai adăugat câteva chestii.
Dar mersi pentru interes. Numai bine!