bazele tehnologiei informa ţi ei curs 10
DESCRIPTION
Bazele Tehnologiei Informa ţi ei Curs 10. Prof. dr. Răzvan Zota ASE Bucureşti Facultatea de Cibernetică, Statistică şi Informatică Economică [email protected] http:// zota .ase.ro/ bti. Bazele Tehnologiei Informaţiei – partea a 2-a. Noţiuni preliminarii, asambloare, compilatoare, interpretoare - PowerPoint PPT PresentationTRANSCRIPT
Bazele Tehnologiei InformaţieiCurs 10
Prof. dr. Răzvan ZotaASE Bucureşti
Facultatea de Cibernetică, Statistică şi Informatică Economică[email protected]
http://zota.ase.ro/bti
2
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
3
Bibliografie
• Bazele tehnologiei informaţiei, F. Năstase, R. Zota – Ed. ASE, 2014
• Intel Architecture Users’ Manual – Intel
4
Conţinut
• Noţiuni preliminarii• Cod-maşină• Asambloare • Interpretoare • Compilatoare
5
Introducere
Date de intrare (I NPUT)
Date de ieşire
(OUTPUT)
PROCESARE
Figura 1. Modelul procesării datelor al lui J ohn von Neumann
Datele:
• Programe (listă de instrucţiuni utilizate într-un anumit scop)
• Date
“Arhitectura HARVARD”
6
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, Python)
7
Exemplu
HLL (C) i=j+k;
ASM MOV eax,[12011234]ADD eax,[12011238]MOV [1201123C], eax
Cod binar maşină 0010 0000 0011 10010001 0010 0000 00010001 0010 0011 01001101 0000 1011 10010001 0010 0000 00010001 0010 0011 10000010 0011 1100 00000001 0010 0000 00010001 0010 0011 1100
8
Instrucţiuni cod-maşină
Instrucţiunile maşină pot fi grupate în 4 mari categorii. Ele pot fi instrucţiuni pentru:
1) Transferul şi manipularea datelor;2) Operaţii de intrare/ieşire;3) Transferul controlului programului;4) Controlul maşinii (termină procesarea, resetează
maşina, etc.)
9
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.
10
EDIT – COMPILE – LINK - LOAD
Editare (EDIT)
Editare de legături
(LI NK)
Figura 2. Schema generală EDIT-COMPI LE-LINK-LOAD
Fişier sursă
Fişier obiect (binar)
Fişier
executabil Î ncărcare
în memorie (LOAD)
Compilare (COMPILE)
Rulează
11
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.
12
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.
13
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.
14
Interpretoare
Dezavantajul este că operează mai 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.
15
Interpretoare
Editare
Erori
Figura 3. Modul de lucru al unui interpretor
Fişier sursă
Decodifică, selectează şi execută
Analiză
Rutine de comenzi
16
Interpretor Java
Editare
Applet J ava
Figura 4. Compilarea şi interpretarea Java
Fişier sursă J ava
Compilator
J ava
J ava Byte
codes
I nterpretor
J ava
Browser Web
Fişier HTML
Limbajul de programare Java posedă o modalitate interesantă de compilare şi interpretare ilustrată în figura 4.