jeni duke lexuar...
Leksione

Makina me zero operandë

Një makinë do të quhet me zero operandë, në rastin kur instruksionet aritmetike dhe logjike të saj nuk specifikojnë asnjë operandë në instruksion.  Këto makina njihen me emrat “zero-address machine”, “stack machine” apo “zero operand instructions”. Kështu instruksioni i mbledhjes do të ishte thjesht :

ADD   

Që një instruksion të mund të realizojë veprime të tilla nëpërmjet ALU-se, ai ka nevoje të domosdoshme për një strukture të posaçme siç është stiva. (stack, ang. pile, fr.). Skematikisht kjo paraqitet në figurën e mëposhtme. Pra, në mënyrë implicite dy operandat tërhiqen prej stivës. Ndërsa rezultati, në mënyrë gjithashtu implicite vendoset në majë të stivës ( Top of the stack).

Stiva, në përgjithësi,  është një strukturë të dhënash e tipit LIFO (Last In , First Out). Pra, e dhëna e fundit që hyn në stivë do të jetë e para që do të dalë prej saj (kujtoni funksionin e butonave “back” dhe “forward” që gjenden në çdo “web-browser”).  Në rastin që po trajtojmë, kemi të bëjmë me një stive hardware , e cila krijohet në  kujtesën qendrore ose në regjistra dhe që mbushet e zbrazet me instruksionet “push” dhe “pop” respektivisht.

Të shikojmë se si realizohet veprimi  S=A+B në rastin e makinës me 0-adresë, ku S, A dhe B janë variabla që gjenden në kujtesën qendrore.

PUSH  A         ;  vendos në stivë variablin A

PUSH  B          ; vendos në stivë variablin B

ADD                ;  kryej mbledhjen A+B. Rezultati në mënyrë implicite vendoset në ;majë të stivës ( Top of the stack)

POP     S          ; rezultatin vendose në kujtese në “S”

 

Shënim : Në shembullin e mësipërm instruksionet PUSH dhe POP kopjojnë të dhëna brenda kujtesës qëndrore. Ekzistojnë  procesorë që mundësojnë veprimet PUSH dhe POP edhe për regjistrat. Kështu p.sh. në një procesor Intel (iAX-86) instruksioni PUSH AX vendos në majë të stivës regjistrin AX. Gjithashtu stiva mund të implementohet edhe në regjistra. Megjithatë kemi të bëjmë përsëri me makine me 0-adrese , pasi instruksionet e manipulimit të të dhënave nuk “shikojnë” regjistra, por vetëm stivë. Këta janë pra, regjistra të pa-adresueshëm.

Le të marrim një shembull tjetër me veprim më kompleks :

Z = (X ´ Y) + (W ´ U)

Ekzekutimi do të ishte si më poshtë:

PUSH  X

PUSH  Y

MULT

PUSH W

PUSH U

MULT

ADD

POP     Z

 

Shënim : Arkitektura e tipit “stack” kërkon që veprimet aritmetike ti shprehim ndryshe nga sa jemi mësuar zakonisht (“infix notation”). Kështu veprimi i mësipërm, i shprehur sipas mënyrës së ekzekutimit nga makina me zero operandë do të  ishte : Z=XY x WU x +.

Kjo mënyrë të shprehuri e veprimeve quhet “shënim postfix” ( “postfix notation”) ose  “shënim invers” “reverse Polish notation”. Kjo në nder të zbuluesit të saj, polakut Jan Lukasiewicz.

Në formë të përmbledhur për makinat me zero-operandë mund të shkruajmë :

·         Përdorin instruksione me zero operandë (ADD, MUL, etj.) dhe një operandë (PUSH A, POPZ etj)

·         Instruksionet LOAD dhe STORE përdorin vetëm një operandë që gjendet në kujtesën qendrore.

·         Instruksionet e tjera përdorin operanda që në mënyrë implicite gjenden në stivë.

·         Instruksionet PUSH dhe POP manipulojnë me të dhëna që gjenden vetëm në maje të stivës (top of the stack).

·         Instruksionet aritmetike e logjike përdorin dy të dhënat që gjenden në majë të stivës.

·         Kanë avantazhin se krijojnë kod objekt më të vogël se arkitekturat e tjera dhe se kompilatorët dhe interpretuesit për këto makina janë më të thjeshtë.

·         Ndryshe nga kujtesa, stiva nuk mund të adresohet në mënyrë të rastit, por vetëm në mënyrë LIFO. 

Cilat janë disa nga kompjuterat që përdorin arkitekturë  0 operandë?

Në vitet ’60 pak kompani, duke vlerësuar se ishte e vështire që kompilatorët të përdornin me efikasitet regjistrat,  hoqën dorë plotësisht nga përdorimi i regjistrave prej instruksioneve që manipulojnë të dhënat. U krijuan pra kompjuterat që bazohen në “stack machine”, pra me zero operandë.  Linden kështu kalkulatorët e parë HP  shumë të famshëm në atë kohë dhe më vonë minikompjuteri HP3000 (1973). Kompjuter tjetër i spikatur që ka përdorur “stack architecture” është edhe B5000 (1961) i firmës Burroughs.  Kooprocesoret Intel 8087-80487, plotësues për veprime me presje notuese të procesorëve 8086-80486sx, funksionon si një “stack machine” me stive të implementuar në regjistra.

Edhe  Java Virtual Machine përdor stivën në mënyrë të ngjashme me “stack machine ». Në Java, operandat nuk ruhen në regjistra por në stive. Kështu operandat futen « push » në stive, përpunohen dhe mandej nxirren « pop-off » nga stiva. Përdoret kjo teknike sepse ajo gjeneron një kod objekt me të vogël, veti shumë i rëndësishme  kjo për programe që shkarkohen nëpërmjet Internetit, apo që integrohen në pajisje të ndryshme (embedded applications). 

Diskutim

Ende pa komente.

Lini një Përgjigje

Ju lutemi, bëni hyrjen me një nga këto metoda që të postoni komentin tuaj:

Stema e WordPress.com-it

Po komentoni duke përdorur llogarinë tuaj WordPress.com. Dilni /  Ndryshoje )

Foto Google

Po komentoni duke përdorur llogarinë tuaj Google. Dilni /  Ndryshoje )

Foto Twitter-i

Po komentoni duke përdorur llogarinë tuaj Twitter. Dilni /  Ndryshoje )

Foto Facebook-u

Po komentoni duke përdorur llogarinë tuaj Facebook. Dilni /  Ndryshoje )

Po lidhet me %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Regjistroni adresën tuaj e-mail për të marrë artikujt e rinj nëpërmjet mesazheve ...

Kategori

Intel CPU Architectures

Procesore Apple Ax

Apple A12 Bionic
Këtë e pëlqejnë %d blogues: