SSE Shuffle Explorer V2

  • Wie bekommt man beim programmieren in Assembler die Werte in den xmm-Registern in die richtige Reihenfolge?!
    Es gibt zahlreiche Befehle, um die Bits und Bytes umzuschachteln; Um mir selber das Leben etwas einfacher zu machen, hab ich mir folgendes Tool gebastelt.

    Gleich vorweg: es ist brandneu und ich hab selber noch nicht damit gearbeitet, ich hoffe jedoch, dass es seinen Zweck gut erfüllt und keine Bugs enthält :whistling:

    Ich erspar mir erstmal eine Funktionserklärung und hoffe, dass das meiste selbsterklärend ist...
    Nur folgendes: Bei den Shuffle-Befehlen kann man mit der Maus durch Kilcken und Ziehen die Register in die gewünschte Reihenfolge bringen.
    Und bei pshufb wird mit Reset (Button "R" bei xmm1) nicht auf Null resettet, sondern auf die Werte, welche xmm0 1:1 kopieren.

    SSE_Shuffle.jpg


    EDIT: Simuliert nun SSE3 u. SSSE3 - Befehle, falls die CPU diese nicht unterstützt.

    E

  • Vielen Dank Eukalyptus! :thumbup:

    Die Shuffle Befehle sind mir noch ein Rätsel. Ein Bild sagt mehr als 1000 Worte!

    Wird wohl für meine ASM Kurse sehr nützlich sein.

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Hi,
    ich habe bisher schon oft mit deiner ersten Version gearbeitet, spart den Griff zum Taschenrechner :thumbup:

    Leider stürzt bei mir Win7/64 der ASM-Code mit pshufb ab...ich debugge mal....

    //EDIT
    PSHUFB und PALIGNR sind SSSE3-Befehle (Achtung, 3 mal S ist das! ), mein AMD Llano A6-3400M hat die wohl nicht implementiert!
    Ich habe jetzt einfach die "Bilder" 13 und 17 nicht dargestellt.

    Generell ist es besser, per CPUID die Verfügung der Prozessorbefehle abzuklären! Aber wer macht das schon :whistling:

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    2 Mal editiert, zuletzt von Andy (12. April 2015 um 12:27)

  • Das liegt wohl daran, dass pshufb anders funktioniert als, pshufd/lw/hw

    Das Ziel-Register wird geshuffelt lt. den Bytes im zweiten Register.
    Byte 1 im zweiten Register enthält den Index, von welchem Byte das neue erste Byte abstammen soll...


    Im Shuffle-Explorer kannst du via Drag&Drop (oben anklicken, unten loslassen) die gewünschte Reihenfolge festlegen und dann siehst du in "xmm1 Source", welche Bytes im zweiten Register stehen müssen (Auf Byte-Ansicht stellen -> <B> klicken)


    E

  • Jetzt weißt du endlich mal wie es mir geht, wenn ich GDI+ coden muss :P