Feltételes és feltétel nélküli átutalások

Tehát már írni egyszerű behelyezés szerelvény. Mi most úgy a feltételes és feltétlen transzferek (hasonló if-then-else, goto Pascal). Belátható, hogy bármely program ugrik lassítja a program végrehajtását (általában elvégzéséhez szükséges átmeneti 5. CPU, és néha több). A modern processzorok órajel-frekvencia növelése használt csővezetékeket. A tény az, hogy az egyes szolgáltatások processzor parancs megköveteli számos intézkedést tett: az első intézkedés felismeri a parancsot végrehajtja egy másik harmadik valami mást csinál, a negyedik. A modern processzorok elismert, amíg az egyik csapat egy időben végeznek más, valami történt a harmadik, a negyedik és így tovább. Amikor a program feltételes átutalás processzor betölti az adatokat vezeték, kezdve a pont, ahol az ő véleménye, vezet az átmenet. Abban az esetben, egy sikertelen elágazás-előrejelző összes jelenlegi csővezeték parancsokat kell végrehajtani, majd a szállítószalag-szeres, végre egy feltételes elágazás, és csak ezután a csővezeték újra betöltődik. Nyilvánvaló, hogy ez rossz hatással van a hatékonyságot. Ez lényegében egy kisebb számú utasítás által feldolgozott nem múló időegység. Ezen túlmenően, a csővezeték betöltése szükségtelen adatokat. Minél hosszabb a csővezeték a processzor, annál gyorsabban tudja futtatható program, hanem annál nagyobb a veszteség átmenet sikertelen. Ez azt jelenti, ugyanazon a frekvencián a CPU jobb, ami rövidebb, mint a szállítószalag. Magától értetődik, hogy ahol csak lehet tenni anélkül, hogy az átmenetet, jobb nélkülük. Például, akkor jobb használni CMPXCHG típusú parancsokat. cmp mint feltételes átmenetek. Ebben az esetben a CPU egység felelős az elágazás-előrejelző nincs engedélyezve (ami csökkenti annak valószínűségét, alapjárat). De anélkül, hogy a mi átmenet csapat nagyon korlátozott, ezért meg kell vizsgálni őket (sőt, ők használják elég gyakran, különösen a fordítóprogramok!) Ellenőrző Transfer útmutató


1) JMP címke - feltétel nélküli ugrást egy címkét. Például: jmp @exit; Régen nagyon gyakran. Lényegében ugyanazt hajtja végre, mint a goto Pascal

2) jcc címke (jcc - az egyik parancs az alábbi táblázatban) - a feltételes ugrás. Az átmenet kerül végrehajtásra, ha a feltétel teljesül. A valóságban minden feltétel minden olyan feltétel zászlókat. Általában mielőtt feltételes elágazás utasítás végrehajtásakor cmp parancs. bár ez nem feltétlenül szükséges. Az alábbi példában, szeretnénk megtalálni a modul számát eax:
nbspnbsp cmp eax, 0;
nbspnbsp Jgem @NoNEG;
nbspnbsp neg eax;
@NoNEG:
Ha meg fogja érteni a zászlókat. és megérteni, hogy mi a zászlókat is változik minden csapatnak, akkor írj a feltételes ugrások, például, miután a csapat december Ez néha egy kis teljesítmény növekedés. feltételes elágazó utasítás:

Feltétel CMP

Feltétel CMP

Ha nagyobb vagy egyenlő
ha nincs transzfer

Ha nagyobb vagy egyenlő

ha az alábbi
ha az átutalás

ha kisebb vagy egyenlő

ha kisebb vagy egyenlő

ha egyenlő
ha nulla

ha nem egyenlő
ha nem nulla

ha van egy túlfolyó

ha nincs túlcsordulás

ha van paritás

ha nincs paritás

Kapcsolódó cikkek