Hirdetés

Új hozzászólás Aktív témák

  • dabadab

    titán

    válasz bandi0000 #11473 üzenetére

    "mind1 hogy ha számokat akarok összeadni/kivonni/szorozni/osztani, akkor char-vagy int ként tárolom és adom össze?"

    Egyáltalán nem és ez az egész MMX-es (illetve SIMD-s) bohóckodás lényege: hogy itt nem egy-egy számmal csinálsz valamit, hanem egyszerre sok számmal csinálod ugyanazt - jelen esetben egy utasítással összeadsz nyolc számpárt.

    És itt jön elő az, hogy ezt a sok adatot hogyan adod át a processzornak - ha egyszer a paddb utasításnak csak két operandusa van, akkor hogy a csudába adsz meg neki 16 számot? Úgy, hogy azt mondod neki, hogy a (64 bites, vagyis 8 byte-os) operandus minden egyes byte-ját kezelje külön számként.

    "ne haragudj, hogy ennyire értetlen vagyok, de alapvetően c/c++/c# vonalon mozgok"

    Nem haragszok, de az teljesen biztos, hogy C vonalon egyáltalán nem mozogsz :DDD A C gyakorlatilag egy hordozható assembler nyelv, ott létfontosságú, hogy tudd, hogy hogyan néznek ki az adataid a memóriában, márpedig nálad ez a rész láthatóan kimaradt, mert a C#-ban tök jól el lehet lenn úgy is, hogy ha ezt a részt egy "magic happens" felirat fedi el :)

    A char nem azt jelenti, hogy az a típus karakter lenne (azt meg aztán végképp nem, hogy abban ASCII reprezentációban lenne bármi is), hanem csak azt, hogy az egy 8 bites érték (ráadásul a C standard sajnos azt sem specifikálja, hogy most signed vagy unsigned - a PADDB meg ilyen szempontból semleges, az általa adott eredmény akkor is jó lesz ha signed, meg akkor is, ha unsigned módon akarod értelmezni az eredményt - egészen addig, amíg nincs túlcsordulás).

Új hozzászólás Aktív témák