160 likes | 343 Views
Bazele Tehnologiei Informa ţi ei Curs 10. Prof. dr. Răzvan Zota ASE Bucureşti Facultatea de Cibernetică, Statistică şi Informatică Economică zota@ase.ro http:// zota .ase.ro/ bti. Bazele Tehnologiei Informaţiei – partea a 2-a. Noţiuni preliminarii, asambloare, compilatoare, interpretoare
E N D
Bazele Tehnologiei InformaţieiCurs 10 Prof. dr. Răzvan Zota ASE Bucureşti Facultatea de Cibernetică, Statistică şi Informatică Economică zota@ase.ro http://zota.ase.ro/bti
Bazele Tehnologiei Informaţiei – partea a 2-a • Noţiuni preliminarii, asambloare, compilatoare, interpretoare • Microprocesorul • Regiştrii microprocesorului Intel Pentium • Noţiuni de ASM • Memoria şi ierarhia de memorie • Memoria - segmentare şi paginare • Comunicaţii seriale şi paralele
Bibliografie • Bazele tehnologiei informaţiei, F. Năstase, R. Zota – Ed. InfoMega, 2007 • Elemente de arhitectură a sistemelor de calcul şi operare - R. Zota, Ed. ASE, 2004 (pt curs şi seminar) • Programare în limbaj de asamblare – Gh. Muscă, Ed. Teora, 1998 (pt seminar) • Intel Architecture Users’ Manual – Intel
Conţinut • Noţiuni preliminarii • Cod-maşină • Asambloare • Interpretoare • Compilatoare
Introducere • Datele: • Programe (listă de instrucţiuni utilizate într-un anumit scop) • Date • “Arhitectura HARVARD”
Limbaje de nivel înalt şi de nivel jos • Microprocesorul – limbaj propriu – mulţimea de instrucţiuni maşină – cod-maşină - LLL (Low Level Language) • HLL (High Level Language) Limbaj de nivel înalt (BASIC, Pascal, FORTRAN, C, C++, Java)
Exemplu HLL (C) i=j+k; ASM MOV eax,[12011234] ADD eax,[12011238] MOV [1201123C], eax Cod binar maşină 0010 0000 0011 1001 0001 0010 0000 0001 0001 0010 0011 0100 1101 0000 1011 1001 0001 0010 0000 0001 0001 0010 0011 1000 0010 0011 1100 0000 0001 0010 0000 0001 0001 0010 0011 1100
Instrucţiuni cod-maşină Instrucţiunile maşină pot fi grupate în 4 mari categorii. Ele pot fi instrucţiuni pentru: • Transferul şi manipularea datelor; • Operaţii de intrare/ieşire; • Transferul controlului programului; • Controlul maşinii (termină procesarea, resetează maşina, etc.)
Compilatoare şi asambloare • Compilatoarele translatează instrucţiunile HLL în binar cod maşină pentru a fi direct executate de către computer. • Asambloarele şi limbajele de asamblare au fost utilizate înainte de apariţia compilatoarelor • Limbajul de asamblare posedă instrucţiuni cod-maşină ce poartă denumirea de mnemonice (provin de la cuvintele în engleză ce specifică acţiunea lor) precum ADD, MOV, SUB, CMP sau JMP. • Translatarea unui program HLL se poate face fie prin intermediul unui compilator, fie prin intermediul unui interpretor.
Editarea de legături • Dimensiunile mari ale programelor de astăzi a condus la împărţirea acestora în mai multe părţi, denumite module. • Pentru obţinerea unui program executabil, fiecare modul trebuie proiectat, scris şi compilat iar apoi toate componentele rezultate trebuie combinate împreună de un editor de legături (linker sau link editor). • Acest proces nu implică doar punerea împreună a componentelor, ci presupune rezolvarea referinţelor externe. Atunci când un program este partiţionat în module, sunt frecvente cazurile în care codul dintr-un modul trebuie să facă referire la date sau sub-rutine dintr-un alt modul pereche.
Editarea de legături –cont. • Compilatoarele translatează un singur modul la un moment dat. Atunci când un compilator încearcă să determine echivalentul numeric al acestor referinţe simbolice, va descoperi că nu există valori valide în cadrul modului curent. • Aceste simboluri nerezolvate sunt denumite referinţe externeşi rămân simbolice (fără o valoare numerică) până în momentul în care editorul de legături rezolvă aceste referinţe. Interpretoarele oferă o alternativă pentru a rula programe scrise într-un limbaj înalt de programare.
Interpretoare În loc de a translata instrucţiunile de nivel înalt în cod maşinăşi de a crea un program executabil, interpretorul citeşte instrucţiunile de nivel înalt una câte unaşi le execută folosind o bibliotecă proprie de rutine. În acest mod, codul executabil nu este generat din codul sursă ci este conţinut (integrat) în cadrul interpretorului. Interpretorul "vede" codul sursă HLL ca date de intrare care trebuie analizate şi apoi trebuie procesate conform semnificaţiei lor. Avantajele folosirii unui interpretor sunt: pornirea rapidă şi aparenta lipsă a complexităţii legate de compilare şi editare de legături.
Interpretoare Dezavantajul este căoperează foarte lent; programele compilate au fost întotdeauna superioare ca viteză programelor interpretate. Este ceva obişnuit ca interpretoarele să convertească instrucţiunile de intrare într-o formă intermediară alcătuită din anumite simboluri, înainte de a se lua o decizie asupra acţiunilor ce vor fi executate (figura 3). Simbolurile generate sunt apoi trecute unui decodificator care va selecta rutina corespunzătoare ce va fi executată. Uneori interpretorul este văzut ca o "maşină virtuală" deoarece se comportă într-un fel ca o componentă hardware: citeşte instrucţiuni pe rând şi se supune lor. Interpretoarele apropie nivelul execuţiei instrucţiunilor de nivelul programului conceput în limbajul de nivel înalt.
Interpretor Java Limbajul de programare Java posedă o modalitate interesantă de compilare şi interpretare ilustrată în figura 4.