Differences

This shows you the differences between two versions of the page.

Link to this comparison view

so-etti:teme:tema_restanta [2014/07/16 09:49]
alexandru.radovici
so-etti:teme:tema_restanta [2014/07/16 10:06] (current)
alexandru.radovici
Line 53: Line 53:
 Exemple: Exemple:
  
 +<​code>​
 function gotox x@integer andy y@integer andWrite text@string andNewFile nl@integer returns nothing function gotox x@integer andy y@integer andWrite text@string andNewFile nl@integer returns nothing
 start start
Line 60: Line 61:
   stop   stop
 end end
 +</​code>​
 ==== Afisarea pe ecran ===== ==== Afisarea pe ecran =====
 <​code>​ <​code>​
Line 65: Line 67:
 </​code>​ </​code>​
  
 +==== Apelarea functiilor ====
 +Aplelarea unei functii se face cu run
 +<​code>​
 +run nume_functie parametru1 continuare_nume_functie parametru2 ...
 +</​code>​
 +Daca apare intr-o expresie o functie (poate fi doar o functie care intoarce ceva, ea apare intre {}
 +<​code>​
 +write 10+{run ...} in variabila
 +</​code>​
 +
 +==== If =====
 +<​code>​
 +if expresie_logica start
 +else
 +stop
 +</​code>​
 +
 +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
 +| - sau
 += - egal
 +!= - diferit
 +
 +==== Afisarea pe ecran =====
 +<​code>​
 +print expresie
 +</​code>​
 +
 +===== 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 ====== ===== 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) +  * 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) +  ​* ​Executati AST-ul (10 p) 
-Afisati limbajul in asamblare (10 p) +  ​* ​Afisati limbajul in asamblare (10 p) 
-Executati limabjul de asamblare (10 p)+  ​* ​Executati limabjul de asamblare (10 p) 
 + 
 +===== Erori ===== 
 +In caz de eroare de parcurgere, afisati: 
 +<​code>​ 
 +Error: text erooare 
 +</​code>​ 
 + 
 +Programul iese cu un code de eroare
  
-== Des 
so-etti/teme/tema_restanta.1405493361.txt.gz · Last modified: 2014/07/16 09:49 by alexandru.radovici
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0