You are on page 1of 13

LEKCIJE IZ SISTEMSKOG PROGRAMIRANJA Sakupio: Ribi Samir et rta er!

i"a
#$eptembar %&&'(

1. Programerov pogled na organizaciju procesora 7 1.1. Centralna Procesorska Jedinica 7 1.2. Dizajn procesora prema skupu instrukcija 7 1.3. Memorija 7 1.4. Dizajn procesora prema memorijskom pristupu 8 )*+*)* Tro,re$-e ma.i-e / )*+*%* 0 oa,re$-e ma.i-e / )*+*1* Je,-oa,re$-e ma.i-e #akumu2ator$ke( ' )*+*+* Je,-oa,re$-e ma.i-e $a i.e re3i$tara ' )*+*4* Nu2a a,re$-e ma.i-e #$teko -e( ' 1.5. 8 !8" #amilija mikroprocesora 1 2. Adresiranje podataka na sistemskom nivou 12 2.1. $e%istri 12 %*)*)* /&/5 )56bit-i re3i$tri )% %*)*%* /&1/5 1%6bit-i re3i$tri )% 2.2. Do&ijanje #izi'ke memorijske adrese na PC procesorima 13 %*%*)* Rea2-i re7im )1 %*%*%* )56bit !a.tie-i re7im )1 %*%*1* 1%6bit-i !a.tie-i re7im )+ 2.3. (nstrukcijski operandi 14 2.4. (ndirektno adresiranje 14 %*+*)* Napre,-o i-,irekt-o a,re$ira-"e )4 2.5. Predsta)ljanje cijeli* &roje)a 15 %*4*)* Z-ak i ri"e,-o$t )4 %*4*%* Pr i komp2eme-t )4 %*4*1* 0ru3i komp2eme-t )5 %*4*+* Sma-"e-"e e2i8i-e po,ataka )9 %*4*4* Po ea-"e e2i8i-e po,ataka )9 2.". +roje)i u pokretnom zarezu 17 %*5*)* Ne:i"e2i bi-ar-i bro"e i )9 %*5*%* IEEE pre,$ta 2"a-"e pokret-o3 !are!a )' 2.7. ,tek 13. Mainski kod i njegovo generisanje 20 3.1. Ma.inski jezik 2 3.2. /sem&lerski jezik 2 3.3. 0sno)ne instrukcije 2 3.4. Direkti)e 21 1*+*)* 0irekti a e;u %) 1*+*%* 0irekti a <,e=-e %) 1*+*1* 0irekti e po,ataka %% 3.5. Pr)i pro%ram 23 1*4*)* Kompa"2er$ke $pe:i>i8-o$ti %4 1*4*%* A$emb2ira-"e pro3rama %4 1*4*1* Kompa"2ira-"e C pro3rama %5 1*4*+* Li-ko a-"e ob"ekt-i? pro3rama %5 1*4*4* Ra!umi"e a-"e a$emb2er$ko3 2i$ti-3a %5 1*4*5* @i3 i Litt2e E-,ia- pre,$ta 2"a-"e %9 1*4*9* A!orak !a pi$a-"e pro3rama %9 3.". (nstrukcije za pro.irenje )eli'ine podataka 28 3.7. /ritmeti'ke instrukcije 2-

1*9*)* Prim"er pro3ram 1& 1*9*%* I-$truk:i"e pro.ire-e ta8-o$ti 1) 3.8. 1ontrolne strukture 32 1*/*)* PoreBe-"a 1% 1*/*%* I-$truk:i"e 3ra-a-"a 1% 1*/*1* I-$truk:i"e pet2"i 14 3.-. 0peracije pomijeranja &ito)a 35 1*'*)* Lo3i8ko pomi"era-"e 14 1*'*%* Apotreba pomi"era-"a 15 1*'*1* Aritmeti8ko pomi"era-"e 15 1*'*+* Rotira-"e bito a 15 1*'*4* Prim"er upotrebe i-$truk:i"a !a pomi"era-"e i rotira-"e 19 1*'*5* @u2o e bit opera:i"e 19 1*'*9* AN0 opera:i"a 19 1*'*/* OR opera:i"a 19 1*'*'* COR opera:i"a 1/ 1*'*)&* NOT opera:i"a 1/ 1*'*))* TEST i-$truk:i"a 1/ 1*'*)%* Apotreba bit opera:i"a 1' 3.1 . (z&je%a)anje uslo)ni* skoko)a 33.11. (nstrukcije zamjene podataka 4 3.12. Potpro%rami 4 1*)%*)* Ma-ipu2a:i"a $tekom +& 1*)%*%* I-$truk:i"e CALL i RET +& 4. enerisanje koda radi implementiranja programski! jezika visokog nivoa 41 4.1. Pre)o2enje standardni* kontrolni* struktura 41 +*)*)* I> -are,ba +) +*)*%* D?i2e pet2"a +) +*)*1* 0o E?i2e pet2"a +) 4.2. Potpro%rami 42 +*%*)* Ko- e-:i"e po!i a +% +*%*%* Pro$2"eBi a-"e parametara -a $teku +% +*%*1* Loka2-e ari"ab2e -a $teku +4 +*%*+* Fi.emo,u2-i pro3rami +9 4.3. Po)ezi)anje asem&lera i C3a 48 +*1*)* u a-"e re3i$tara +' +*1*%* O!-ake >u-k:i"a +' +*1*1* Re,o$2i"e, pro$2"eBi a-"e parametara +' +*1*+* Ra8u-a-"e a,re$e 2oka2-i? ari"ab2i 4& +*1*4* Po rat-e ri"e,-o$ti 4& +*1*5* 0ru3e ko- e-:i"e po!i a 4& +*1*9* Po!i C >u-k:i"a i! a$emb2er$ko3 pro3rama 41 +*1*/* Po-o -o po!i 2"i i i rekur!i -i potpro3rami 4+ +*1*'* Rekur!i -i potpro3rami 4+ +*1*)&* Tipo i ari"ab2i u C6u 44 4.4. 4izo)i 55 +*+*)* 0e=-i$a-"e -i!o a 45 +*+*%* 0e=-i$a-"e -i!o a kao 2oka2-e ari"ab2e -a $teku 45 +*+*1* Pri$tup e2eme-tima -i!a 45 +*+*+* 0ru3e prim"e-e i-$truk:i"e LEA 4/ +*+*4* Fi.e,ime-!io-a2-i -i!o i 4/ +*+*5* 0 o,ime-!io-a2-i -i!o i 4/ +*+*9* 0ime-!i"e i!-a, , a 4' +*+*/* Pro$2"eBi a-"e i.e,ime-!io-a2-i? -i!o a kao parametara u C 4' 4.5. (nstrukcije za rad s nizo)ima i strin%o)ima " +*4*)* ita-"e i pi$a-"e memori"e 5& +*4*%* REP i-$truk:i"$ki pre>ik$ 5) +*4*1* Stri-3 i-$truk:i"e !a poreBe-"e 5%

+*4*+* I-$truk:i"$ki pre>ik$i REPG 5% 4.". Pokretni zarez "3 +*5*)* Numeri8ki kopro:e$or 51 +*5*%* A8ita a-"e i $m"e.ta-"e 5+ +*5*1* O$-o -e aritmeti8ke opera:i"e 5+ +*5*+* Ra!-e i-$truk:i"e 59 4.7. ,trukture "7 ". #laz i izlaz $% 5.1. Memorijski i 56( mapirani ure2aji "5.2. 7ideo 7 4*%*)* Fi,eo -a -i$kom -i ou 9& 4*%*%* Fi,eo -a -i ou Di-,oE$a 9% 4*%*1* Fi,eo -a -i ou Li-uGa 95 5.3. 8astatura 7" 4*1*)* Ta$tatura -a -i$kom -i ou 95 4*1*%* Ta$tatura -a -i ou Di-,oE$a 99 4*1*1* Ta$tatura -a -i ou Li-uGa 99 5.4. Disk 77 4*+*)* 0i$k -a -i$kom -i ou 99 4*+*%* 0i$k -a -i ou Di-,oE$a 9/ 4*+*1* 0i$k -a -i ou Li-uGa 9' $. Prekidi &1 ".1. 9ta je to prekid: 81 5*)*)* Har, er$ki i-terapti /) 5*)*%* So>t er$ki i-terapti 6 trapo i /% 5*)*1* I!u!e:i /% ".2. 0&rada prekida u realnom re;imu 82 ".3. 0&rada prekida u za.ti<enom re;imu 82 ".4. 1ako iz%leda tipi'na rutina za o&radu prekida 83 7. 'ompajleri &4 7.1. Prolazi 84 7.2. =la)ne #aze kompilacije 84 9*%*)* Pre,pro:e$ira-"e /+ 9*%*%* Lek$i8ka a-a2i!a /+ 9*%*1* Par$ira-"eI $i-tak$-a a-a2i!a /4 9*%*+* Sema-ti8ka a-a2i!a /4 9*%*4* Kompa"2er$ka a-a2i!a /4 9*%*5* Optimi!a:i"a /4 9*%*9* Ge-eri$a-"e ko,a /4 7.3. >> i >$ parsiranje 85 7.4. ,intaksni dija%rami i sintaksne procedure kroz primjer kompajlera 8" 9*+*)* Je!i:i /5 9*+*%* Opi$ kompa"2era /9 9*+*1* O$-o -i pri-:ipi /9 9*+*+* Si-tak$-i ,i"a3rami i 2i$ti-3 kompa"2era // 9*+*4* A2a!I i!2a! i ,o? ata-"e $imbo2a '% 9*+*5* Numeri8ke i a2>a-umeri8ke ko-$ta-te '% 9*+*9* Fari"ab2e i -i!o i '% 9*+*/* I!ra!i '1 9*+*'* Ko-tro2-e $trukture '+ 9*+*)&* Ju-k:i"e '+ 9*+*))* A o,-i i !a r.-i ,io '+ 9*+*)%* Te$t-i prim"er i upotreba kompa"2era '4

&. (rugi razvojni alati %& 8.1. >inker -8 /*)*)* Li-kero a pra i2a '/ /*)*%* Jik$ira-"a i re2oka:i"e '' /*)*1* @ib2ioteke )&& 8.2. Dinami'ke &i&lioteke 1 /*%*)* 0i-ami8ke bibi2ioteke )&& /*%*%* Apra 2"a-"e memori"om u 0LL )&) /*%*1* Ek$p2i:it-o i imp2i:it-o po e!i a-"e 0LL )&) /*%*+* Prim"er pra 2"e-"a 0LL i po!i a $a imp2i:it-om i ek$p2i:it-om ari"a-tom* )&% 8.3. Make 1 3 /*1*)* Make>i2e $truktura )&1 /*1*%* Prim"er make>i2e )&1 8.4. /sem&leri 1 4 /*+*)* 0 opro2a!-i a$emb2er )&+ /*+*%* Je,-opro2a!-i a$emb2er )&4 8.5. (nterpreteri 1 5 8.". 1omandne linije? (nte%rirana okru;enja i )izualna raz)ojna okru;enja 1 7 %. )zvrno okru*enje 110 -.1. @indoAso) iz)r.ni #ormat datoteke 11 '*)*)* MS60OS !a32a 2"e i o$-o -i pro3ram u rea2-om re7imu ))& '*)*%* PE $i3-aturaI PE !a32a 2"e i op:io-a2-o !a32a 2"e ))& '*)*1* Sta-,ar,-e $ek:i"e ))) '*)*+* Sek:i"a $ i! r.-im pro3ramomI *teGt ))) '*)*4* Sek:i"e po,atakaI *b$$I *r,ataI *,ata ))) '*)*5* Re$ur$-a $ek:i"aI *r$r: ))) '*)*9* Sek:i"a i! e!e-i? po,ataka *e,ata i u e!e-i? po,ataka *i,ata ))) '*)*/* Sek:i"a ,eba3er$ki? i->orma:i"a *,ebu3 ))) '*)*'* Li-uG ELJ i! r.-i >ormat ))) -.2. >oader BPunilacC 112 -.3. @indoAso)e sistemske #unkcije 112 '*1*)* Di-,oE$ API ))% '*1*%* O$-o -e u$2u3e ))% '*1*1* Gra>i8ke >u-k:i"e #G0I( ))% '*1*+* Kori$-i8ki i-ter>e"$ ))1 '*1*4* Mre7-i $er i$i ))1 '*1*5* Deb API >u-k:i"e ))1 '*1*9* Mu2time,i"a2-i API"i ))1 '*1*/* API !a i-terak:i"u i!meBu pro3rama ))1 '*1*'* Priro,-i API ))1 '*1*)&* Omota8i oko API6"a ))1 '*1*))* Po!i a-"e API >u-k:i"a ))+ '*1*)%* Li$ta >u-k:i"a ))+ -.4. >inu!o)e sistemske #unkcije 125 -.5. 7irtualne ma.ine 125 '*4*)* Firtua2-e ma.i-e ko"e omo3ua a"u i$to reme-o i! r.a a-"e i.e operati -i? $i$tema )%5 '*4*%* Ap2ika:i"$ka irtua2-a ma.i-a )%5 '*4*1* Firtua2-o okru7e-"e )%5 '*4*+* Spa"a-"e >i!i8ki? ma.i-a u irtua2-u ma.i-u )%9 10. #vod u konkurentno programiranje 12& 1 .1. Da.to su potre&ne niti 128 1 .2. 4iti Bt*readC 128 1 .3. 1reiranje niti pod >inu!om 12)&*1*)* Kreira-"e -iti )%'

)&*1*%* eka-"e -a !a r.etak -iti )%' 1 .4. 4iti pod @indoAsom 13 1 .5. Pro&lem konkurentnosti 131 )&*4*)* A!a"am-o i$k2"u8i a-"e )1) )&*4*%* @ib2iote8-e >u-k:i"e i -iti )1% 11. +ptimizacija koda i per,omanse 133 11.1. 1ada optimizo)ati? kada ne 133 ))*)*)* Ka$-a optimi!a:i"a )11 ))*)*%* Ra-a optimi!a:i"a )1+ ))*)*1* Optimi!a:i"a u pra om reme-u )1+ 11.2. 1ako se tra;i spori kod u pro%ramima: 134 ))*%*)* Pro>a"2eri )14 11.3. Da li je optimizacija neop*odna: 135 11.4. 8ri tipa optimizacije 13" ))*+*)* @o2"i a23oritam )15 ))*+*%* @o2"a imp2eme-ta:i"a )15 ))*+*1* @ro"a-"e :ik2u$a )15 11.5. +enc*mark pro%rami 137 11.". 0ptimizacija izlaza kompajlera 137 11.7. Pro.irenje kompajlera Eildzan32 optimizatorom 138 12. Prilog- )nstrukcijski set Pentiuma )) 141 )%*)*)* Opera:io-i ko,o iI opi$ )+) )%*)*%* Prim"eri ko,ira-"a komp2et-i? i-$truk:i"a )+1

1. Programerov pogled na organizaciju procesora


1.1.Centralna Procesorska Jedinica
Ce-tra2-a pro:e$or$ka "e,i-i:a #CPA( "e >i!i8ki ureBa" ko"i i! r.a a i-$truk:i"e* I-$truk:i"e ko"e CPA oba 2"a $u u32a -om eoma "e,-o$ta -e* I-$truk:i"e mo3u !a?ti"e ati po,atke $ ko"im ra,e ,a $e -a2a!e u $pe:i"a2-im 2oka:i"ama u-utar $amo3 CPAI ko"e $e !o u re3i$tri* CPA mo7e pri$tupati po,a:ima u re3i$trima ,a2eko br7e -e3o u memori"i* IpakI bro" re3i$tara u CPA "e o3ra-i8e-I pa pro3ramer mora biti pa72"i tako ,a 8u a u re3i$trima $amo tre-ut-o kori.te-e po,atke* I-$truk:i"e ko"e CPA i! r.a a pre,$ta 2"a"u -"e3o ma.i-$ki "e!ik* Ma.i-$ki pro3rami ima"u m-o3o "e,-o$ta -i"u $trukturu -e3o pro3rami u "e!iku i$oko3 -i oa* Ma.i-$ki pro3rami $u ko,ira-i kao $iro i bro"e iI a -e u ra!um2"i om tek$tua2-om >ormatu* CPA mora biti u $ta-"u ,a ,eko,ira -am"e-u i-$truk:i"e eoma br!o ,a bi $e ra,i2o e>ika$-o* Ma.i-$ki "e!ik "e $to3a ,i!a"-ira- $ tim :i2"em u i,uI a -e ,a bu,e 2ako ra!um2"i 2"u,ima* Pro3rami pi$a-i u ,ru3im "e!i:ima $e mora"u ko- ertirati u priro,-i "e!ik pro:e$ora ,a bi $e i! r.a a2i -a ra8u-aru* Kompa"2er "e pro3ram ko"i pre o,i pro3ram -api$a- u -ekom pro3ram$kom "e!iku u ma.i-$ki "e!ik o,3o ara"ue ra8u-ar$ke ar?itekture* Ge-era2-oI $ aki tip pro:e$ora ima $ o" 2a$titi ma.i-$ki "e!ik* To "e "e,a- o, ra!2o3a !a.to pro3rami !a Meki-to. -e mo3u ,a ra,e -a I@M6PC ra8u-arima* Ra8u-ar kori$titi $at ,a u$k2a,i i! r.a a-"e ,ate -are,be* Sat otku:a a -a >ik$-o" >rek e-:i"i # po!-ato" kao br!i-a $ata(* Ako $te kupi2i % GH! komp"uterI % GH! "e >rek e-:i"a o o3 $ata* Sat -e prati mi-ute i $eku-,e O- pro$to otku:a a ko-$ta-t-im ritmom* E2ektro-ika pro:e$ora kori$ti otku:a"e ,a i! r.a a $ o"e opera:i"e korekt-oI $2i8-o kao .to otku:a"i metro-oma omo3ua a"u $ ira-"e mu!ike korekt-im ritmom* @ro" otku:a"a #i2i kako $e obi8-o !o u :ik2u$a( ko"u i-$truk:i"a !a?ti"e a !a i$i o, 3e-era:i"e pro:e$ora i mo,e2a* @ro" :ik2u$a ko2iko tra"e i-$truk:i"a !a i$i pri"e $ e3a o, $ami? i-$truk:i"aI a2i i o, ,ru3i? >aktora*

1.2.Dizajn procesora prema skupu instrukcija


Po$to"e , a pri$tupa ,i!a"-u ra8u-ara : - RISC: Ra8u-ar $ re,u:ira-im $kupom i-$truk:i"a* Samo$ta2-e i-$truk:i"e oba 2"a"u "e,-uI ,obro ,e>i-ira-u opera:i"u* RISC pri$tup pretpo$ta 2"a ,a e $e ei-a pro3ramira-"a oba 2"ati u "e!i:ima i$oko3 -i oa* O a" pri$tup po ea a bro" i-$truk:i"a ko"e "e potreb-o upotrebiti u pro3ramuI a2i po"e,-o$ta 2"u"e $trukturu pro:e$ora* CISC: Ra8u-ar $ komp2ek$-im $kupom i-$truk:i"a* Je,-a i-$truk:i"a oba 2"a i.e opera:i"a* Je,-o$ta -i"e "e pi$ati pro3rame u ma.i-$kom i a$emb2er$kom "e!ikuI a2i $e komp2ek$-o$t pro:e$ora po ea a*

1.3.Memorija
O$-o -a "e,i-i:a memori"e "e ba"t* Ra8u-ar $a 1% me3aba"ta memori"e mo7e $a,r7a ati prib2i7-o 1% mi2io-a ba"to a po,ataka* S aki ba"t u memori"i "e o!-a8e- "e,i-$t e-im bro"em ko"i $e !o e a,re$a # $2ika )(* Mikropro:e$or 8ita ko,o e i-$truk:i"a i po,atke i! memori"e pri$tupa"ui -"i?o im a,re$ama*

Loka:i"a

&

) 1A

% +C

1 //

+ 9%

4 %5

5 /1

9 'J

Fri"e,-o$t %E

.l. 1 Memorijske Adrese

e$to $e memori"a kori$ti u eim koma,ima o, po"e,i-a8-i? ba"to a* Na PC ar?itekturiI ,ata $u ime-a i eim $ek:i"ama memori"e* Memori"a $e m"eri u ki2oba"tima # )&%+ ba"ta(I me3aba"tima #) &+/ 495 ba"to a( i 3i3aba"tima # )&919+)/%+ ba"ta(* et orobit-i bro" $e !o e -ib2* Sto3aI $ aka ?ek$a,eka,-a :i>ra pre,$ta 2"a -ib2* 0 a -ib2a 8i-e ba"tI pa $e ba"t pre,$ta 2"a , o:i>re-im ?ek$a,eka,-im bro"em* Fri"e,-o$t ba"ta arira i!meBu & i )))))))) u bi-ar-om $i$temuI & i JJ u ?ek$a,eka,-om te & to %44 u ,eka,-om* Ri"e8 #Eor,( 0up2a ri"e8 et ero$truka ri"e8 para3ra> % ba"ta + ba"ta / ba"to a )5 ba"to a
.l. 2 /edinice memorije

S i po,a:i u memori"i $u -umeri8ki* Z-ako i $e $m"e.ta"u kori.te-"em ko,o a ko"i mapira"u bro"e e u !-ako e* Je,a- o, -a"8e.i? ko,o a !-ako a "e po!-at po, ime-om ASCII #Ameri:a- Sta-,ar, Co,e >or I->ormatio- I-ter:?a-3e(* Po$to"i i -o i"iI ei -a8i- ko,ira-"a !-ako a ko"i po-eka, !am"e-"u"e ASCII po, ime-om A-i:o,e* G2a -a ra!2ika i!meBu o a , a -a8i-a "e .to ASCII kori$ti "e,a- ba"t !a ko,ira-"e !-akaI a A-i:o,e kori$ti , a ba"ta #i2i ri"e8( po !-aku* Na prim"erI ASCII mapira ba"t +) )5 #54)&( u !-ak AK A-i:o,e mapira ri"e8 &&+))5 u i$to $2o o* Po.to ASCII kori$ti ba"tI o3ra-i8e- "e -a $amo %45 ra!2i8iti? !-ako a * A-i:o,e pro.iru"e ASCII ri"e,-o$ti -a )5 bit-e ri"e8i i tako ,opu.ta pre,$ta 2"a-"e i.e !-ako a* To "e a7-o !a pre,$ta 2"a-"e !-ako a $ i? "e!ika $ i"eta*

1.4.Dizajn procesora prema memorijskom pristupu


S aka -are,ba treba ,a oba i -eku opera:i"u* Komp2ek$-e opera:i"e $e rea2i!u"u kao kombi-a:i"a pro$ti? opera:i"a* Na prim"er i$ka! pri,ru7i a-"a $e $a$to"i o, pro$ti? opera:i"a $abira-"aI m-o7e-"aI o$tatka pri ,i"e2"e-"uI $m"e.ta-"a u memori"u i 8ita-"a i! memori"e : a L #b M : ( < #, N > (K O e pro$te opera:i"e $e mo3u rea2i!o ati -a ra!2i8ite -a8i-e* Na prim"erI $abira-"e , a bro"a !a?ti"e a , a bro"a ko"a 7e2imo $abrati i treba ,a rati kao re!u2tat trei bro"I a2i to -e !-a8i ,a $e $ a tri bro"a mora"u -a2a!iti -a memori"$kim 2oka:i"ama* Prema bro"u memori"$ki? opera-a,a I pro:e$ori $e ,i"e2e -a -u2a a,re$-e I "e,-oa,re$-e I , oa,re$-e i troa,re$-e ma.i-e*

1.4.1.Trodresne maine
S i tri opera-,a $u ek$p2i:it-o -a e,e-i u ei-i i-$truk:i"a* M A00 ,e$tI $r:)I $r:%: MO,e$tP L MO$r:)P N MO$r:%P M MALT ,e$tI $r:)I $r:%: MO,e$tP L MO$r:)P M MO$r:%P Ma,a o a" pri$tup i!32e,a r2o moa- I ima $ o"i? 2o.i? $tra-a* I-$truk:i"e !a?ti"e a"u m-o3o pri$tupa RAM memori"iI .to "e !-at-o $pori"e -e3o i-$truk:i"e u-utar pro:e$ora* Na"popu2ar-i"a 16a,re$-a ma.i-a "e bio ra8u-ar FAC ))* Prim"er troa,re$-e i-$truk:i"e -a o om pro:e$oru #-e mikropro:e$oru( "e a,,21 #R%(I#R1(I#R+( ko"a $abira ri"e,-o$ti -a 2oka:i"ama ko"e poka!u"u re3i$tri R% i R1 i upi$u"e re!u2tat -a a,re$u -a ko"u poka!u"e re3i$tar R+*

1.4.2.Dvoadresne maine
A %6a,re$-o" ma.i-iI i-$truk:i"e ima"u $amo , i"e ek$p2i:it-e a,re$e* Je,-a o, -"i? ima , i"e u2o3e: a,re$a i! or-o3 opera-,a i a,re$a o,re,i.ta* M A00 ,e$tI $r:: MO,e$tP L MO,e$tP N MO$r:P M MALT ,e$tI $r:: MO,e$tP L MO,e$tP M MO$r:P M MOFE ,e$tI $r:: MO,e$tP L MO$r:P /

Na"popu2ar-i"a %6a,re$-a ma.i-a "e mikropro:e$or Motoro2a 5/&&&* Prim"er , oa,re$-e i-$truk:i"e !a o u ar?itekturu "e $ub*2 #A)(I#A%( I ko"a o,u!ima ri"e,-o$t -a a,re$i -a ko"u poka!u"e re3i$tar A) o, ri"e,-o$ti -a a,re$i ko"u poka!u"e A% i re!u2tat $m"e.ta -a a,re$u -a ko"u poka!u"e A%*

1.4.3.Jednoadresne maine (akumulatorske


A "e,-oa,re$-o" ma.i-i i2i akumu2ator$ko" ma.i-iI akumu2ator ima u2o3u o,re,i.-o3 i "e,-o3 o, i! or-i? opera-a,a* Potreb-o "e -a e$ti $amo a,re$u ,ru3o3 i! or-o3 opera-,a* Spe:i>i8-a "e "e,i-o STORE i-$truk:i"aI u ko"o" "e akumu2ator i! or-i opera-,I a o,re,i.te "e -a memori"$ko" 2oka:i"i ko"a $e ek$p2i:it-o -a o,i* Akumu2ator "e re3i$tar u akumu2ator$ko" ma.i-i* Akumu2ator $e -a2a!i u-utar CPA* M A00 a,,r: a::um L a::um N MOa,,rP M MALT a,,r: a::um L a::um M MOa,,rP M LOA0 a,,r: a::um L MOa,,rP M STORE a,,r: MOa,,rP L a::um E o kako $e kori$te 3or-"e i-$truk:i"e !a i!ra8u-a a-"e -are,be a L a M b N : M , M e* Pretpo$ta imo ,a $e ari"ab2e aI bI :I ,I e -a2a!e -a memori"$kim 2oka:i"ama )&&I )&+I )&/I ))% i ))5I u -a e,e-om re,u* LOA0 )&& MALT )&+ STORE )&& LOA0 )&/ MALT ))% MALT ))5 A00 )&& STORE )&& K a:: L a K a:: ML b K a L a:: K a:: L : K a:: ML , K a:: ML e K a:: NL a K a L a::

Na"popu2ar-i"i pro:e$or i! o e kate3ori"e "e Mo$ te:?-o2o3Q 54&%I ko"i "e u3raBi a- u ra8u-are App2e II i Commo,ore 5+* Prim"er i-$truk:i"e -a o om mikropro:e$oru "e L0A )&&& ko"a pre-o$i ri"e,-o$t $ 2oka:i"e )&&& u akumu2ator*

1.4.4.Jednoadresne maine sa vie registara


M-o3e mo,er-e ma.i-e #-pr* CPA u $ akom PC ra8u-aru( pri? ati2e $u i,e"u "e,-e a,re$eI a2i um"e$to "e,-o3 akumu2atora kori$te i.e ra!2i8iti? i-ter-i? re3i$tara* To ubr!a a -eke opera:i"e* Na prim"erI !a i!ra8u- pret?o,-o3 prim"era -a /&/5 imat emo MOF ACIO)&&P MAL DOR0 O)&+P MOF @CIAC MOF ACIO)&/P MAL DOR0 O))%P MAL DOR0 O))5P A00 ACI@C MOF O)&&PIAC

1.4.!."ula adresne maine (stekovne


Mo3u "e i pri$tup ,a $e opera-,i -a2a!e -a i-ter-om m"e$tu u memori"i i2i pro:e$oru* Je,a- taka pri$tup "e preko $teka #o -"emu i.e u po$eb-om po32a 2"u(* Ko, & a,re$-e ma.i-e opera:i"e u!ima"u ri"e,-o$ti $a $teka i $m"e.ta"u re!u2tate takoBe -a $tek* Za pri"e-o$ po,ataka i!meBu memori"$ki? e2i"a i $tek kori$te $e '

$pe:i"a2-e opera:i"e PASH i POP* Ma2i ,io $teka "e u-utar pro:e$oraI o$tatak "e u memori"i* O aka ko-:ept ima matemati8ki kopro:e$or /&/9I ,o pro:e$ora +/5 pra 2"e- kao po$eba- 8ip* @ro" ba"to a -a $teku #,ubi-a $teka( uti8u -a ri"eme i! r.e-"a pro3rama* E o -eki? i-$truk:i"a ?ipoteti8ke & a,re$-e ma.i-e* M A00: pu$? # pop N pop ( M MALT: pu$? # pop N pop ( M PASH a,,r: pu$? # MOa,,rP ( M POP a,,r: MOa,,rP L pop Poka!ae $e kako $e mo3u kori$titi 3or-"e i-$truk:i"e ,a $e i!ra8u-a -are,ba a L a M b N : M , M e* Pretpo$ta 2"a $e ,a $e ari"ab2e aI bI :I ,I e -a2a!e -a memori"$kim 2oka:i"ama )&&I )&+I )&/I ))%I i ))5I re$pekti -o* PASH )&& PASH )&+ MALT PASH )&/ PASH ))% MALT PASH ))5 MALT A00 POP )&& Ka Ka b K #a M b( K #a M b( : K #a M b( : , K #a M b( #: M ,( K #a M b( #: M ,( e K #a M b( #: M , M e( K #a M b N : M , M e(

1.5.80 8! "amilija mikroprocesora


S aki I@M PC kompatibi2-i ra8u-ar kori$ti pro:e$or i! >ami2i"e I-te2 /&G/5 #i2i $ro,a- pro:e$or ,ru3o3 proi! oBa8a(* Pro:e$ori u o o" >ami2i"i ima"u -eke !a"e,-i8ke karakteri$tikeI uk2"u8u"ui o$-o -i ma.i-$ki "e!ik* IpakI -o i"e er!i"e pro:e$ora ima"u !-at-o ee mo3u-o$ti* &0&&0&0&$: O i pro:e$ori $a pro3ramer$ke ta8ke 32e,i.ta $u i,e-ti8-i* To $u bi2i pro:e$ori kori.te-i u -a"ra-i"im PC ra8u-arima* O-i ima"u $2"e,ee )5 bit-e re3i$tre: ACI @CI CCI 0CI SII 0II @PI SPI CSI 0SI SSI ESI IPI JLAGS* Po,r7a a"u $amo ,o "e,-o3 me3aba"ta memori"e i ra,e $amo u rea2-om re7imu ra,a* A tom re7imu pro3ram mo7e pri$tupiti bi2o ko"o" memori"$ko" a,re$iI pa 8ak i memori"i ,o,i"e2"e-o" ,ru3im pro3ramima* To 8i-i i$pra 2"a-"e 3re.aka i $i3ur-o$t eoma ote7a-im* TakoBerI pro3ram$ka memori"a $e mora ,i"e2iti u $e3me-te ko"i -e mo3u biti ei o, 5+K* &02&$: O a" pro:e$or "e kori.te- u AT k2a$i PC ra8u-ara* O- ,o,a"e -eke -o e i-$truk:i"e o$-o -om ma.i-$ko" "e!iku pro:e$ora /&//R/5* IpakI -"e3o a 32a -a -o a o$obi-a "e )56bit-i !a.tie-i re7im* A o om re7imu o- mo7e pri$tupiti ,o )5 me3aba"ta i !a.tititi pro3rame o, pri$tupa tuBo" memori"i* IpakI pro3rami $u i ,a2"e po,i"e2"e-i u $e3me-te ko"i -e mo3u biti ei o, 5+ K* &03&$: O a" CPA "e !-at-o pobo2".a- u o,-o$u -a /&%/5* Pr oI pro.ire-i $u m-o3i re3i$tri -a e2i8i-u 1% bita #EACI E@CI ECCI E0CI ESII E0II E@PI ESPI EIP( i ,o,a-a % -o a )5 bit-a re3i$tra JS i GS* TakoBer u o,i -o i 1%6bit-i !a.tie-i re7im* A o om re7imuI mo7e $e pri$tupiti memori"i ,o + 3i3aba"ta* Pro3rami $u i ,a2"e po,i"e2"e-i u $e3me-teI a2i $a,a "e $ aki $e3me-t e2ik ,o + 3i3aba"ta* &04&$1Pentium1Pentium Pro: O i pro:e$ori uk2"u8u"u i-$truk:i"e !a ra, $ pokret-im !are!om i u32a -om ubr!a a"u i! r.a a-"e i-$truk:i"a* Pentium MM21 Pentium ))13eleron: O i pro:e$ori ,o,a"u MMC #Mu2tiMe,ia eCte-$io-$( i-$truk:i"e Pe-tiumu* Te i-$truk:i"e omo3ua a"u i$to reme-e :"e2obro"-e opera:i"e .to ubr!a a 3ra>i8ke prim"e-e** Pentium )))1Pentium )4 $u pri-:ipi"e2-o Pe-tium II $a SSE i-$truk:i"ama* Te i-$truk:i"e omo3ua a"u i$to reme-e opera:i"e u pokret-om !are!u* Neke er!i"e Pe-tium IF ima"u 5+ bit-e re3i$tre* Pentium (ual 3ore13ore 213ore i7 uk2"u8u"u 5+ bit-e i-$truk:i"eI )I%I+I i2i / pro:e$ora u i$tom i-te3ri$a-om ko2uI SSE1 i-$truk:i"e* )&

2. #dresiranje podataka na sistemskom nivou


2.1.#e$istri
AH AC
.l. 3 5egistar A2

AL

2.1.1.$%$& 1&'(itni registri


Ori3i-a2-i /&/5 pro:e$or "e obe!b"eBi ao 8etiri )56bit-a re3i$tra op.te -am"e-e: ACI @CI CC i 0C* S aki o, o i? re3i$tara $e mo7e ra$ta iti u , a o$mobit-a re3i$tra* Na prim"erI re3i$tar AC $e mo7e ra$ta iti -a re3i$tre AH i ALI kako $e i,i -a S2* 1 * Re3i$tar AH $a,r7i 3or-"i? #i2i i.i?( / bita re3i$tra AC a re3i$tar AL $a,r7i -i7i? o$am bita re3i$tra AC* e$to $e AH i AL kori$te kao meBu$ob-o -e!a i$-i re3i$triI a2i "e a7-o -apome-uti ,a o-i -i$u -e!a i$-i o, re3i$tra AC* Prom"e-a ri"e,-o$ti re3i$tra AC e promi"e-iti i re3i$tre AH i AL i obr-uto* S2i8-oI @C $e ,i"e2i -a @H i @LI CC -a CH i CLI a 0C -a 0H i 0L* Re3i$tri op.te -am"e-e $e kori$te u i-$truk:i"ama !a prem"e.ta-"e po,ataka i aritmeti8kim i-$truk:i"ama* Po$to"e , a )56bit-a i-,ek$-a re3i$tra: SI i 0I* O-i $e 8e$to kori$te kao poka!i a8iI a2i $e takoBe kori$te kao re3i$tri op.te -am"e-e* IpakI o-i $e -e mo3u ra$ta iti u o$mobit-e re3i$tre* )56bit-i re3i$tri @P i SP $e kori$te ,a poka!u"u -a po,atke -a ma.i-$kom $teku i !o u $e @a$e Poi-ter i Sta:k Poi-ter* O -"ima e biti ka$-i"e ri"e8i* )56bit-i re3i$tri CSI 0SI SS i ES $u $e3me-t-i re3i$tri* O-i o,reBu"u ko"i e $e ,io memori"e kori$titi !a ra!2i8ite ,i"e2o e pro3rama* CS pre,$ta 2"a Co,e Se3me-tI 0S pre,$ta 2"a 0ata Se3me-tI SS pre,$ta 2"a Sta:k Se3me-tI a ES pre,$ta 2"a EGtra Se3me-t* ES $e kori$ti kao pri reme-i $e3me-t-i re3i$tar* I-$tru:tio- Poi-ter #IP( re3i$tar $e kori$ti !a"e,-o $a CS re3i$trom ra,i prae-"a a,re$e -are,-e i-$truk:i"e ko"u e i! r.iti CPA* A -orma2-o" $itua:i"iI kako $e i! r.a a i-$truk:i"aI IP $e u ea a ,a poka!u"e -a -are,-u i-$truk:i"u u memori"i* Re3i$tar JLAGS 8u a a7-e i->orma:i"e o re!u2tatu pret?o,-e i-$truk:i"e* O i re!u2tati $e $m"e.ta"u kao i-,i i,ua2-i bito i u re3i$tru* Na prim"erI Z bit "e ) ako "e re!u2tat pret?o,-e i-$truk:i"e bio &I a Z bit "e & ako re!u2tat pret?o,-e i-$truk:i"e -i"e bio &* Ne mi"e-"a"u $ e i-$truk:i"e bite u JLAGS re3i$tru*

2.1.2.$%3$& 32'(itni registri


Na /&1/5 i ka$-i"im pro:e$orima $u pro.ire-i re3i$tri* Na prim"erI )5 bit-i AC "e pro.ire- -a 1% bita* Ra,i kompatibi2-o$ti $a $tarim pro:e$orimaI AC $e o,-o$i -a )56bit-i re3i$tar ,ok $e EAC kori$ti ,a poka!u"e pro.ire-iI 1%6bit-i re3i$tar* AC "e -i7i? )5 bita re3i$tra EACI ba. kao .to "e AL -i7i? / bita re3i$tra AC #kao i EAC(* Nema ,irekt-o3 -a8i-a !a pri$tup ,o i.i? )5 bita EAC re3i$tra* O$ta2i pro.ire-i re3i$tri $u E@CI ECCI E0CI ESI i E0I* Pro.ire-i $u "o. -eki re3i$tri* @P "e po$tao E@PK SP "e po$tao ESPK JLAGS "e po$tao EJLAGS a IP "e po$tao EIP* IpakI !a ra!2iku o, re3i$tara op.te -am"e-eI u 1%6bit-om !a.tie-om re7imu #bit e o -"emu ka$-i"e ri"e8i( kori$ti $e $amo pro.ire-a er!i"a o i? re3i$tara* Se3me-t-i re3i$tri $u i ,a2"e )56bit-i -a /&1/5* A e,e-a $u , a -o a $e3me-t-a re3i$tra: JS i GSI be! po$eb-o3 !-a8e-"a -"i?o i? ime-a* O-i $u pomo-i $e3me-t-i re3i$tri poput ES* Termi- Sri"e8T $e po-eka, ,e>i-i.e kao e2i8i-a re3i$tara po,ataka pro:e$ora* Za /&G/5 >ami2i"u o a" termi- "e $a,a ma2o !bu-"u"ui* Na S2* %I mo7e $e i,"eti ,a "e Sri"e8T ,e>i-i$a-a ,a bu,e % ba"ta #i2i )5 bita(* To "e !-a8e-"e ,ato ka,a $e /&/5 po"a io* Ka,a $e po"a io /&1/5I o,2u8e-o "e ,a $e ,e>i-i:i"a po"ma Sri"e8T -e mi"e-"aI iako $e promi"e-i2a e2i8i-a re3i$tra* ))

2.2.Do%ijanje "izi&ke memorijske adrese na PC procesorima


2.2.1.)ealni re*im
A rea2-om re7imu ra,a #kompatibi2-om $a /&/5 i akti -om pri $tartu ra8u-ara( memori"a "e o3ra-i8e-a -a $amo "e,a- me3aba"t* I$pra -e a,re$e u op$e3u #?ek$a,eka,-o( i!meBu &&&&& i JJJJJ* O e a,re$e !a?ti"e a"u %&6bit-e bro"e e* Ja$-oI %&6bit-i bro" $e -e mo7e $m"e$titi u )56bit-e re3i$tre pro:e$ora /&/5* I-te2 "e ri"e.io ta" prob2em kori.te-"em , i"e )56bit-e ri"e,-o$ti ra,i o,reBi a-"a a,re$e* Pr a )5 bit-a ri"e,-o$t $e !o e $e2ektor i2i $e3me-t-a ri"e,-o$t* Fri"e,-o$ti $e2ektora $e mora"u 8u ati u $e3me-t-im re3i$trima* 0ru3a .e$-ae$tobit-a ri"e,-o$t $e !o e po!i:i"a #o>>$et(* Ji!i8ka a,re$a ko"a $e ,obi"e 1% bit-im parom $e2ektor6po!i:i"a $e ra8u-a >ormu2om )5)&M $e2ektor N po!i:i"a M-o7e-"e $a )5)& u ?ek$a,eka,-om $i$temu "e 2akoI $amo $e ,o,a"e & -a kra" bro"a* Na prim"erI >i!i8ka a,re$a -a e,e-a kao &+9C)5:&&+/)5 i!-o$i: &+9C& N&&+/ 66666666 &+/&/ A $u.ti-iI ri"e,-o$t $e2ektora "e bro" para3ra>a #S2* %(* Se3me-t-o a,re$ira-"e u rea2-om re7imu ima tri -e,o$tatka: U Je,a- $e2ektor mo7e pri$tupiti $amo 5+K memori"e #3or-"i 2imit )56bit-e a,re$e(* Vta ako pro3ram ima i.e o, 5+K ko,aW Po"e,i-a8-a ri"e,-o$t u CS $e -e mo7e kori$titi tokom :i"e2o3 pro3rama* Pro3ram $e mora ra$"ei u $ek:i"e #! a-e $e3me-ti( ko"i $u krai o, 5+ ki2oba"ta* Ka,a $e i! r.e-"e pro3rama prem"e.ta $ "e,-o3 $e3me-ta -a ,ru3iI ri"e,-o$t CS re3i$tra $e mora promi"e-iti* S2i8-i prob2emi $e ,e.a a"u $ e2ikom ko2i8i-om po,ataka i 0S re3i$trom* To mo7e biti r2o -eu3o,-oX U S aki ba"t u memori"i -ema "e,i-$t e-u $e3me-t-u a,re$u* Ji!i8ko" a,re$i &+/&/ moe $e pri$tupiti kao &+9C:&&+/I &+90:&&1/I &+9E:&&%/ i2i &+9@:&&4/* To mo7e ote7ati poreBe-"e $e3me-tira-i? a,re$a* U Nema !a.tite i!meBu $e3me-ataI pa "e mo3ue upi$i a-"e po,ataka u po,ru8"e pre, iBe-o !a ,ru3i pro3ram*

2.2.2.1&'(it zati+eni re*im


A /&%/5 )56bit-om !a.tie-om re7imu ra,aI ri"e,-o$ti $e2ektora $e i-terpretira"u potpu-o ,ru3a8i"e -e3o u rea2-om re7imu* A rea2-om re7imuI ri"e,-o$t $e2ektora "e bro" para3ra>a >i!i8ke memori"e* Ko, !a.tie-o3 re7imaI ri"e,-o$t $e2ektora "e re,-i bro" e2eme-ta u ,e$kriptor$ko" tabe2iI kombi-o a- $ "o. tri bita #o, ko"i? "e,a- o,reBu"e ko"i o, , a mo3ua ,e$kriptor$ka re3i$tra poka!u"e -a tabe2uI a , a bita o,reBu"u $ ko"im pra ima $e 7e2i pri$tupiti memori"$kom $e3me-tu(* Za oba re7imaI pro3ram $e ,i"e2i u $e3me-te* A rea2-om re7imu o i $e3me-ti $u -a >ik$-o" 2oka:i"i u >i!i8ko" memori"i i ri"e,-o$t $e2ektora o,reBu"e re,-i bro" para3ra>a o,ak2e po8i-"e $e3me-t* A !a.tie-om re7imuI $e3me-ti -i$u -a >ik$-o" po!i:i"i u >i!i8ko" memori"i* akI -e mora"u uop.te biti u RAM memori"i* Za.tie-i re7im kori$ti te?-iku ko"a $e !o e irtua2-a memori"a* O$-o -a i,e"a irtua2-e memori"e ,a $e u RAM6u 8u a"u $amo po,a:i i pro3ram ko"i $e tre-ut-o kori$ti* O$ta2i po,a:i i pro3ram$ki ko, $e pri reme-o ,r7e -a ,i$ku ,ok -e bu,u opet potreb-i* A )56bit-om !a.tie-om re7imuI $e3me-ti $e prem"e.ta"u i!meBu memori"e i ,i$ka po potrebi* Ka,a $e $e3me-t rati $a ,i$ka u memori"uI r2o "e "ero at-o ,a e biti $m"e.te- u ,ru3i ,io memori"e u o,-o$u -a o-a" 3,"e "e bio pri"e -e3o .to "e preba8e-a ,i$k* S e $e o o ra,i tra-$pare-t-oI u operati -om $i$temu* Sam pro3ram -e mora biti po$eb-o pi$a- ,a ra,i $ irtua2-om memori"om* )%

A !a.tie-om re7imuI $ akom $e3me-tu "e pri,ru7e- e2eme-t ,e$kriptor$ke tabe2e* Ta" e2eme-t ima $ e i->orma:i"e potreb-e $i$temu ,a !-a o $e3me-tu* I->orma:i"e uk2"u8u"u: ,a 2i "e tre-ut-o u memori"iI ako "e$te Y 3,"e "eI ko"a $u pra a -a, ,atim $e3me-tom #-pr $amo !a 8ita-"e(* Re,-i bro" e2eme-ta $e3me-ta "e ri"e,-o$t $e2ektora $m"e.te-a u $e3me-t-im re3i$trima* Ma-a )56bit-o3 !a.tie-o3 re7ima "e ,a $u memori"$ke po!i:i"e i ,a2"e )5 bit-e ri"e,-o$ti* Kao po$2"e,i:a o o3aI e2i8i-a $e3me-ata "e 2imitira-a -a -a" i.e 5+ ki2oba"ta* To 8i-i prob2emati8-om upotrebu e2iki? -i!o a*

2.2.3.32'(itni zati+eni re*im


/&1/5 u eo "e 1%6bit !a.tie-i re7im* Po$to"e , i"e 32a -e ra!2ike i!meBu 1%6bit-o3 re7ima !a 1/5 i )5 bit-o3 re7ima !a %/5: )* Memori"$ke po!i:i"e $u po ea-e -a 1% bita* To omo3uu"e po$ta 2"a-"e po!i:i"e -a ri"e,-o$t preko + mi2i"ar,e* TakoI $e3me-ti mo3u imati e2i8i-e ,o + 3i3aba"ta* %* Se3me-ti $e mo3u ,i"e2iti -a ma-"e "e,i-i:e o, + ki2oba"taI ko"e $e !o u $tra-i:e* Si$tem irtua2-e memori"e $a,a ra,i $ $tra-i:ama um"e$to $e3me-ata* To !-a8i ,a u memori"i mo7emo ,r7ati i $amo ,i"e2o e $e3me-ata* A )56bit-om re7imu pro:e$ora /&%/5 I i2i "e :i"e2i $e3me-t u memori"i i2i -i"e* To -i"e prakti8-o $a e2ikim $e3me-tima kak e ,opu.ta 1%6bit-i re7im* A Di-,oE$ 1*)I $ta-,ar,-i re7im "e u $t ari %/5 )56bit-i !a.tie-i re7imI a pro.ire-i re7im "e 1%6bit-i !a.tie-i re7im* Di-,oE$ 'CI Di-,oE$ NTR%&&&RCPI OSR% i Li-uG $ i ra,e u 1%6bit-om #-a"-o i"e er!i"e i 5+ bit-om( !a.tie-om re7imu*

)1

You might also like