Aktív témák

  • t3rm1nat0r

    csendes tag

    válasz t3m1nat0r #9 üzenetére

    A logikai műveleteknél ezeket az alaputasításokat már említettem. Ott azt mondtam, hogy maszkokkal lehet a biteket manipulálni. Ez annyit jelent, hogy egy 8 bites regiszterhez 8 bitet adunk meg, amiken egyenként végrehajtódik az, amit az imént leírtam.
    Esszerint 8 darab A és B bemeneti érték van. A bitek bármilyen állapotban lehetnek.
    /terhesek azért nem xD /

    10101100 A
    11001101 B
    10001100 out = A AND B

    10101100 A
    11001101 B
    11101101 out A OR B

    10101100 A
    11001101 B
    01100001 out A XOR B /vagy EOR/

    Igy látszik a logikája a műveleteknek, ha decimálisan vagy hexában írom fel, akkor már csak gyakorlott szem érti, mi miért történik.

    0xac A
    0xcd B
    0x8c out = A AND B

    Vannak még a forgatások és léptetések. Itt csak annyi történik, hogy jobbra vagy balra eltolódik bitenként a regiszter
    10101100 A
    01011000 out ROTATE LEFT /a rövidítés processzor függő/

    10101100 A
    01010110 out RIGHT
    11010110 out RIGHT a legfelső bit ismétlődik. Mivel INT tipusnál az tárolja az előjelet, ezért így a szám negatív marad.

    Az A értéke decimálisan 172, jobbra forgatás után 86. Ez a fele, a forgatást osztás helyett lehet használni, ha 2 hatványával osztunk.
    Régebbi hardveres megoldásoknál ezért találkozunk lépten nyomon olyan számokkal, hogy 2 4 8 16 32 64 128 256 512 1024 ... mert ez az osztást /és ha balra forgatok, akkor szorzást/ sokkal egyszerűbben valósítható meg hardverileg, és még gyorsabb is a működése, mint majd kiderül.

    Be fogok mutatni egy teljes összeadó arámkört működés közben, ahol látszani fog, miért eszik olyan sok időt egy hagyományos processzor, és miért számol például egy geforce sokkal gyorsabban.

Aktív témák