Kezdőoldal » Számítástechnika » Programozás » Amikor írok egy programot és...

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?

Figyelt kérdés

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



#műveletvégzés
2014. márc. 24. 21:59
 1/6 iostream ***** válasza:

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.

2014. márc. 25. 09:34
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
100%

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.

[link]

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.

2014. márc. 25. 10:08
Hasznos számodra ez a válasz?
 3/6 anonim ***** válasza:
De ha ezt így konstansokkal beírod a programodba, hogy 1<2, akkor ezt talán már a fordító kiértékeli, és a lefordítás után már nem is vizsgál semmit, hiszen úgyis mindig ugyanazt az eredményt kapná.
2014. márc. 25. 10:46
Hasznos számodra ez a válasz?
 4/6 anonim ***** válasza:
Igen, ha konstans értékeket írsz, akkor a fordítás során kioptimalizálja azt a compiler.
2014. márc. 26. 13:29
Hasznos számodra ez a válasz?
 5/6 iostream ***** válasza:
Vagy igen, vagy nem. Kioptimalizálhatja, legalábbis a legtöbb programnyelv szabványa erre lehetőséget ad.
2014. márc. 26. 13:51
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:
Betölti a két értéket egy-egy regiszterbe és komparátor áramkörrel meghatározza melyik a nagyobb, beállít vele valamilyen jelzőbitet.
2014. márc. 27. 20:45
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!