Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Cum lucreza un program de calculator
Unui calculator trebuie sa i se explice pas cu pas ce trebuie sa faca. Cat de in detaliu? IN TOATE DETALIILE, si intr-o forma pe care o pricepe. Orice calculator "vorbeste nativ" o singura limba, si anume codul masina, care ii permite executarea unui numar mare (dar limitat) de instructiuni pentru :
Aceste instructiuni sunt aplicate unor tipuri de date, care pot fi:
Prezentam in continuare o aproximare grosiera a modului in care pe un "calculator von Neumann"ruleaza un program simplu, care citeste doua numere, le aduna si apoi afiseaza rezultatul adunarii. Programul va ocupa octeti succesivi in memoria interna, incepand cu locatia 1000. Numerele sunt reprezentate pe 4 octeti, iar instructiunile sunt codificate pe 2, 4 sau 8 octeti. Executia programului incepe de la locatia 1012 (este adresa care se incarca initial in contorul program). Unitatea de control citeste primul octet din memorie, il decodifica si stie deja lungimea instructiunii - deci cati octeti mai trebuie cititi si decodificati pentru executia completa a primei instructiuni. Tot din aceasta analiza se poate calcula si adresa urmatoarei instructiuni, care este plasata in contorul program[1]. Octetii primei instructiuni (4 cu totul) sunt copiati in zonele interne de lucru, decodificati si executati, folosind si unitatea aritmetica si logica. Dupa terminarea executiei primei instructiuni, unitatea de comanda citeste octetul a carui adresa se afla deja in contorul program si ciclul anterior se reia. De retinut ca din punctul de vedere al unitatii centrale, fiecare instructiune trece prin ciclul regasire - decodificare - executie
Cum gandeste omul |
Ce i se explica calcu latorului sa faca |
Observatii |
|
A | |||
B | |||
C | |||
Citeste A |
Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand cu adresa 0 |
instructiune de transfer date |
|
Citeste B |
Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand cu adresa 4 |
instructiune de transfer date |
|
Calculeaza C A+B |
Aduna continutul a 4 celule de memorie (care incep la adresa 0) cu continutul a 4 celule de memorie (care incep la adresa 4) si pune rezultatul in 4 celule de memorie (care incep la adresa 8) |
instructiune de calcul aritmetic |
|
Tipareste C |
Scrie pe display continutul a 4 celule de memorie (care incep la adresa 8) |
instructiune de transfer date |
|
Dupa cum se vede, in calculator mai intai se rezerva spatiu pentru cele trei variabile folosite (cate patru octeti pentru A, B si C), dupa care se executa secvential programul. De ce? Simplu: cate variabile ne trebuie se poate afla rapid citind programul o data. Daca le-am rezervat spatiu la inceput, dupa aceea programul se poate lungi oricat.
Nimeni nu scrie un program pentru a aduna doua numere. Un program mai aproape de realitate ar aduna perechi de numere, si ar arata cam asa:
Cum gandeste omul |
Ce i se "explica" calcu latorului sa faca | ||
A | |||
B | |||
C | |||
Citeste A |
Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand cu adresa 0 |
instructiune de transfer date |
|
Citeste B |
Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand cu adresa 4 |
instructiune de transfer date |
|
Calculeaza C A+B |
Aduna continutul a 4 celule de memorie (care incep la adresa 0) cu continutul a 4 celule de memorie (care incep la adresa 4) si pune rezultatul in 4 celule de memorie (care incep la adresa 8) |
instructiune de calcul aritmetic |
|
Tipareste C |
Scrie pe display continutul a 4 celule de memorie (care incep la adresa 8) |
instructiune de transfer date |
|
Ia-o de la inceput |
Reia executia programului de la adresa de memorie 1012 (salt la 1012) |
instructiune de control al programului |
|
Analizind structura programului, se observa un lucru foarte interesant. Dupa citirea si decodificarea instructiunii de la adresa 1032, contorul program nu va primi adresa 1034 (care din punct de vedere fizic ar fi locatia de memorie a urmatoarei instructiuni), ci 1012. Aceasta transfer al executiei programului la o alta instructiune decat cea urmatoare fizic permite luarea deciziilor bazate pe anumite conditii, lucru care da calculatorului "inteligenta".
A doua versiune are un cusur evident: nu se va opri vreodata. Probabil ca versiunea urmatoare este mai apropiata de realitate
Cum gandeste omul |
Ce i se "explica" calcu latorului sa faca | ||
A | |||
B | |||
C | |||
Citeste A |
Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand cu adresa 0 |
instructiune de transfer date |
|
Citeste B |
Citeste de la tastatura si pune numarul in 4 celule de memorie, incepand cu adresa 4 |
instructiune de transfer date |
|
Calculeaza C A+B |
Aduna continutul a 4 celule de memorie (care incep la adresa 0) cu continutul a 4 celule de memorie (care incep la adresa 4) si pune rezultatul in 4 celule de memorie (care incep la adresa 8) |
instructiune de calcul aritmetic |
|
Tipareste C |
Scrie pe display continutul a 4 celule de memorie (care incep la adresa 8) |
instructiune de transfer date |
|
Daca e cazul, ia-o de la inceput |
Daca mai sunt date, salt la 1012 |
instructiune de control al programului |
|
O noua observatie: desi la adresa 1032 este tot o instructiune de salt (i.e. contorul program va primi valoarea 1012), lungimea instructiunii este mai mare (4 octeti), datorita faptului ca este un salt conditionat.
Copyright © 2024 - Toate drepturile rezervate