Find Jobs
Hire Freelancers

Write some Software

€8-30 EUR

Închis
Data postării: peste 9 ani în urmă

€8-30 EUR

Plata la predare
>>>>>>>>>>>> [login to view URL] <<<<<<<<<<<<<<<<< Se da limbajul ATM, descris mai jos. Scrieti un program care parcurge limbajul, afiseaza AST-ul, il executa, il transforma intr-un limbaj de asamblare dat si executa limbajul de asamblare. Numele fisierului vostru va fi atm si va avea parametrii de forma: $ ./atm nume_fisier actiune actiune: ast - afiseaza AST-ul exe_ast - executa limbajul pe baza AST-ului asm - afiseaza limbajul de asamblare exe_asm - executa limbajul de asamblare primit in nume_fisier Limbajul ATM Variabile type nume type poate fi integer, string sau float Siruri (bonus 5p) type nume(lungime) type poate fi integer, string sau float lungimea este o constanta Atribuire write expresie in variabila Declararea functiilor function nume_functie parametru1@tip continuare_nume_functie parametru2@tip conitnuare_nume_functie parametru3@tip ... returns tip start ... ... ... return (daca e cazul) stop Tipurile de intoarcere sunt oricare din cele trei tipuri de variabile sau nothing daca nu intoarce nimic. La return, functia se opreste imediat Exemple: function gotox x@integer andy y@integer andWrite text@string andNewFile nl@integer returns nothing start print text if nl = 0 start print '\n' stop end Afisarea pe ecran print expresie Apelarea functiilor Aplelarea unei functii se face cu run run nume_functie parametru1 continuare_nume_functie parametru2 ... Daca apare intr-o expresie o functie (poate fi doar o functie care intoarce ceva, ea apare intre {} write 10+{run ...} in variabila If if expresie_logica start else stop Intra in if daca expresia este != 0 si in else daca expresia este 0 Else poate sa liplseasca. If-urile se pot imbrica. Expresii +, -, /, * si % paranteze () ! - not (daca e !=0, ! intoarce 0, si invers) (!4 = 0, !0 = 1) & - si = - egal != - diferit Afisarea pe ecran print expresie Limbajul ASM ADD r2, r1, r0 (r2=r1+r0) SUB r2, r1, r0 (r2=r1-r0) MUL r2, r1, r0 (r2=r1*r0) DIV r3, r2, r1, r0 (r3=r1/r0, r2=r1%r0) impartire intreaga DIVF r2, r1, r0 (r2=r1/r0) impartire in virgula mobila PRINT r0 afiseaza r0 pe ecran TEST r0, r1 JE eticheta - sare daca ultimul test este r0=r1 JNE eticheta - sare daca ultimul test este r0!=r1 JG eticheta - sare daca ultimul test este r0>r1 JL eticheta - sare daca ultimul test este r0<r1 JMP eticheta - sare RUN eticheta p1, p2, p3, impinge pe stiva parametrii si sare la eticheta RETURN valoare - scoate de pe stiva parametrii si sare inapoi de unde a venit cu RUN. Impinge pe stiva valoarea de intoarcere. eticheta: - plaseaza o eticheta Cerinta Scrieti un parser si afisati AST-ul. Forma AST-ului este decizia voastra, insa va trebui sa ii descrieti fiecare nod in fisierul README.txt. (10 p) Executati AST-ul (10 p) Afisati limbajul in asamblare (10 p) Executati limabjul de asamblare (10 p) Erori In caz de eroare de parcurgere, afisati: Error: text erooare Programul iese cu un code de eroare
ID-ul proiectului: 6371766

Despre proiect

2 propuneri
Proiect la distanță
Activ: 10 ani în urmă

Vrei să câștigi bani?

Avantajele de a licita pe platforma Freelancer

Stabilește bugetul și intervalul temporal
Îți primești plata pentru serviciile prestate
Evidențiază-ți propunerea
Te înregistrezi și licitezi gratuit pentru proiecte
2 freelanceri plasează o ofertă medie de €20 EUR pentru proiect
Avatarul utilizatorului
Please add Me (((((((((((((((([Removed by Freelancer.com Admin])))))))))))))))))))))))) for more discuss ........................................................................................................................
€9 EUR în 1 zi
0,0 (0 recenzii)
0,0
0,0

Despre client

Steagul ROMANIA
Romania
0,0
0
Membru din aug. 26, 2014

Verificarea clientului

Mulțumim! Ți-am trimis prin e-mail linkul pe care trebuie să-l accesezi pentru a revendica creditul gratuit.
A apărut o eroare la trimiterea e-mailului. Încearcă din nou.
Utilizatori înregistrați Totalul proiectelor postate
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Se încarcă previzualizarea
S-a oferit permisiunea de depistare a locației.
Ți-a expirat sesiunea pentru conectare sau te-ai deconectat. Conectează-te din nou.