Csere részleg szorzás szerelő

A projekt tulajdonképpen egy online tárháza nyílt forráskód. A fejlesztés lehet elhelyezni itt minden résztvevő számára, és a hozzáférés projektek minden felhasználó számára elérhető a világ bármely pontján.

  • Van egy könyvtár, amelyben sok érdekes kódmintákat különböző programozási nyelvek.

Csere részleg szorzás assembly


Csere részleg szorzás assembly

Írásakor assembler algoritmusok állandó részlege, a osztás helyettesíthető szorzás műveleteket. Miért van erre szükség? Az a tény, hogy a processzor végzi a szorzás művelet többször gyorsabb, mint egy osztás. Például szorzás 5-9 processzor ciklusok töltött (aláírt szorzás) vagy 4-8 (előjel nélküli szorzás), míg a szükséges elválasztó 22-47 ciklus (aláírt osztály), vagy 17-41 ciklus (előjel nélküli osztás). Az optimalizált algoritmusok, mint például a titkosítás, a matematikai számítások, archiválás nagy mennyiségű adat, számítási ellenőrző összegek és más hasonló problémák, megtakarítás minden processzor órajel nyújthat jelentős növekedést a teljes sebességgel a program.

A kézi optimalizálása „AMD Athlon processzor x86 kód optimalizálása Guide” megszorozzuk a kérdés helyett a részleg festett nagy részletességgel. Különös esetek osztódó, mint osztás teljesítmény két, leír egy kiválasztási algoritmus előjeles és előjel nélküli osztás és a kód kiszámításához a kiegészítő korrekciós értékeket. Ezen túlmenően, a kézikönyv leírja optimalizálási technikákat és más matematikai műveleteket. Akkor is, ha soha nem lehet használni a gyakorlatban szorozni a csere részleg, olvastam más módon optimalizálási nagyon hasznos lesz.

Először is, úgy az optimalizálás előjel nélküli egész osztály. Számos módja van, attól függően, hogy az elválasztó értékeket. Első megvalósítási mód - ha a splitter tartományban van 1 és (231 - 1):

Típus algoritmus a faktor és az eltolási tényező számítása értéke alapján az osztó. Az utasítás a program kapnak a forráskód C. Ez egy világos és könnyen érthető.

Második kiviteli alak előjel nélküli Division - Amikor az elválasztó a tartományban a 231 (232 - 1). Ebben az esetben a hányados esetén csak a két érték - 0 vagy 1. Ennek megfelelően az optimalizált algoritmus a következő formában:

Ha az érték az osztalék kérdése további számítások ebben az elrendezésben optimalizálni egy kicsit, lemondva a használata kiegészítő nyilvántartások:

A manuális mód, ezen a helyen van egy elírás. A szöveg beszél megszabadulni a második regiszter, majd törött kódot ugyanazon nyilvántartás (117. oldal, ha kíváncsi). Copy-paste nem mindig hasznos. Szintén a kézikönyv akkor ajánlott használni a lehetőséget, hogy egy további nyilvántartás, bár én személy szerint csinálni néhány alapvető különbség ebben nem látok. Ugyanez a tojás, csak az egyik oldalon.

Mindenesetre, felidézni különleges esetekben előjel nélküli egész osztály. Zero egészek nem osztja meg nincs lehetőség, úgy, hogy a optimalizálás nem lehet kérdés. Ha elosztjuk egy privát mindig osztható az, hogy akkor is meg kell emlékezni az iskolában is. Osztály egy hatalom két Assemblerben optimalizált paranccsal kicsit jobb Shift SHR reg, stepen_dvoyki:

Ugyanezen szabály, elvileg lehetséges, hogy rögzítse és osztály egységet, mert 20 = 1.

Integer aláírt részlege egy kicsit nehezebb, mint a felkészülés az eredmények figyelembe kell venni a jele az osztalék és az osztó. Az alábbi algoritmus csak akkor működik a pozitív értékek az elválasztó. Ha osztó negatív, akkor ez számított első modul, amelyet a további számítások és az eredmény megosztására alkalmazott NEG szerelő parancsot. Ez következik a matematikai axiómák n / -d = - (n / d). A integer elválasztó kell lennie a tartományban 2 és (231-1).

Mint előjel nélküli osztást, algoritmus típusát, a szorzó és egy eltolt együtthatót számítjuk értéke alapján elválasztó, illetve annak modulokat. Forráskód C a kézikönyvben.

Különleges esetekben az osztás a jel is eltér előjel nélküli. Itt például, osszuk el a két és ereje két különböző karakter.

Mint tudod, minden szétválást optimalizálás egy előre ismert állandó végre a színpadon az írás a program, és nem számított dinamikusan működés közben. Egyébként milyen optimalizálási az egész? Ebből az következik, hogy az ilyen algoritmusok gyakran változó osztók nem szükséges.

Kapcsolódó cikkek