Alokacja pamięci struct Test {char c; int n; double x; } st1; st1 cnxcnx
Alokacja pamięci struct Test {char c; int n; double x; } st1; st1 cnxcnx cnxcnx 8888
PROSTY PROCESOR budowa komputera PROCESOR PAMIĘĆ OPERACYJNA URZĄDZENIA ZEWNĘTRZNE
PAMIĘĆ OPERACYJNA (PAO) bezpośrednio dostępna dla procesora zestaw ponumerowanych komórek do przechowywania ciągów binarnych 01n01n m
PROCESOR procesor : układ, który samoczynnie realizuje program program : ciąg poleceń, które może wykonywać procesor polecenie rozkaz, zapisany jako ciąg binarny program sekwencja (ciąg) rozkazów lista rozkazów ( charakteryzuje procesor ) lokalizacja programu : PAO ( von Neumann 1946 )
podstawowy cykl pracy procesora POBIERZ ROZKAZ Z PAMIĘCI OPERACYJNEJ WYKONAJ ROZKAZ
POBIERZ ROZKAZ Z PAMIĘCI OPERACYJNEJ WSKAZANY PRZEZ LICZNIK ROZKAZÓW WYKONAJ ROZKAZ ZMIEŃ ZAWARTOŚĆ LICZNIKA ROZKAZÓW wskazanie rozkazu do wykonania : licznik rozkazów, wskaźnik rozkazu ( rejestr ) LR LR + 1 LR LR + N
budowa rozkazu bezargumentowy 1 - argumentowy 2 - argumentowy Arg : liczba, adres PAO, ozn. rejestru procesora KodOp Arg Arg1 Arg2
architektura prostego procesora KodOp R Arg Rejestr Rozkazu Rejestr A Rejestr B Licznik Rozkazów RR RA RB LR ARYTMOMETR + - STEROWANIE
pole R : wskazuje RA ( 0 ) albo RB ( 1 ) pole Arg: liczba NN albo adres komórki pamięci AP Lista rozkazów, mnemoniczne kody rozkazów rozkazy przesyłania danych SETR, NN MOVR, AP MOVAP, R
rozkazy arytmetyczne ADDR, AP SUBR, AP INCR DECR rozkazy skoków JMPAP JLER, AP rozkazy wprowadzania - wyprowadzania danych INR, NN OUTNN, R
rozkaz SET RA, 45H RR SET R NN 1. RR PAO ( LR ) 2. LR LR dekodowanie KodOP 4. RA RR.Arg
rozkaz ADD RB, 5AEH RR ADD R AP 1. RR PAO ( LR ) 2. LR LR dekodowanie KodOP 4. RT PAO ( RR.Arg ) 5. Arytmometr RB, RT, PLUS 6. RB Arytmometr
zmiana sekwencji rozkazów skok bezwarunkowy JMP LR JMP JMP
rozkaz skoku bezwarunkowego JMP RR PAO ( LR ) 2. LR LR dekodowanie KodOP 4. LR RR.Arg skok warunkowy JLE RA, RR PAO ( LR ) 2. LR LR dekodowanie KodOP 4. jeżeli RA < 0 to LR RR.Arg
prosty program S = Σ a i 1 i n n, a 1, a 2,..., a n 100 : SET RA, 0; zeruj sumę S 101 : MOV 200, RA; zapamiętaj S 102 : IN RB, 1; czytaj n 103 : DEC RB; n : IN RA, 1; czytaj a 105 : ADD RA, 200; a + S 106 : MOV 200, RA; zapamiętaj S 107 : DEC RB; n – : JLE RB, 110; skocz gdy n < : JMP 104; skocz gdy n : OUT 2, RA; wyprowadź wynik
zerowanie obszaru pamięci o długości 2038 bajtów począwszy od adresu : SET RA, 0; zeruj RA 5001 : MOV 1033, RA 5002 : MOV 1034, RA 5003 : MOV 1035, RA : MOV 3070, RA 2038 rozkazów
modyfikacja argumentu rozkazu – adresowanie bezwzględne : adres PAO = argument – adresowanie względne : adres PAO = argument + zawartość rejestru – dodatkowe pole w rozkazie KodOP R M Arg RA RB bez modyfikacji modyfikacja przez RA
MOV RB, 500[RA] RA Adres efektywny
300 : SET RB, 2037;długość 301 : MOV 150, RB;pamiętaj 302 : MOV RA, 0;modyfikator 303 : MOV RB, 0;wartość : MOV 1033[RA], RB;zeruj 305 : INC RA;modyfikator : MOV RB, 150;odczytaj długość 307 : DEC RB;długość : MOV 150, RB;pamiętaj 309 : JLE RB, 311;gdy koniec 310 : JMP 303;powrót 311 :;koniec
stos – zapis / odczyt NDDNDD wzrost stosu skracanie stosu szczyt stosu WS 0101 PUSH R POP R PAO ( WS ) RWS WS + 1 WS WS – 1 R PAO ( WS ) istnieją inne realizacje
stos – wywoływanie podprogramów X + 1 CALL Y X X+1 Y RET WS CALL Y RET PAO ( WS ) LR WS WS + 1 WS WS – 1 LR PAO ( WS ) LR Y X + 1