Amikor írok egy programot és eljutok egy elágazáshoz vagy egy művelethez, akkor a számítógép eldönti hogy true vagy false értéket kapjon az ág vagy kiszámolja a műveletet. Ezt hogy dönti el, hogy számol?
pl.: 1<2 -->igaz de ezt a számítógép honnét tudja
pl2.: 5+5=10 szintén ugyanez a kérsés
Ilyenkor érdemes megírni egy nagyon egyszerű programot, ami csak annyit csinál, hogy ezt a feltételvizsgálatot berakod, és optimalizálás nélkül lefordítod. Ha okos a fordítód, van olyan opciója, hogy ne állítson elő gépi kódot, tehát az assemblyt ne fordítsa tovább. Ekkor meglesheted, hogy konkrétan mit fog végrehajtani a számítógép.
Alapvetően amúgy egy CMP utasítás lesz az egész alapja és egy feltételes ugrás. A CMP összehasonlít két számot, beállít egy csomó jelzőt, flaget, a feltételes ugrás pedig megvizsgál egy adott jelzőcsoportot, és ennek alapján vagy elugrik, vagy nem csinál semmit.
A processzor úgy van kialakítva, hogy két értéket könnyen össze tud hasonlítani, és eldönteni, hogy egyenlők-e, vagy hogy melyik nagyobb.
Ez pl. egy kétbites komparátor.
A két szám X és Y, a kimeneten pedig jelzi, hogy melyik nagyobb, vagy esetleg egyenlők.
Amikor a fenti CMP utasítás végrehajtódik, egy hasonló (csak 32 bites) áramkörre kerülnek az értékek, a kimenetek pedig direkt erre a célra fenntartott bitekbe íródnak. Az utána következő ugró utasítás ezekből a bitekből (flag-ekből) fogja tudni, hogy ugorjon-e vagy sem.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!