Heinz:

Not tested much:

import std.stdio: writeln;

class MyClass {
    uint[] array;

    this() {
        array = new typeof(array)(4);
        array = [10, 20, 30, 40];
    }

    void myFunc() {
        version (D_InlineAsm_X86) {
            auto aptr = array.ptr;
            enum dsize = typeof(array[0]).sizeof;

            asm {
                mov EAX, aptr;

                mov ECX, [EAX + dsize * 1];
                rol ECX, 8;
                mov [EAX + dsize * 1], ECX;

                mov ECX, [EAX + dsize * 2];
                rol ECX, 16;
                mov [EAX+ dsize * 2], ECX;
            }
        } else
             assert(0);
    }
}

void main() {
    auto c = new MyClass();
    writeln(c.array);
    c.myFunc();
    writeln(c.array);
}

Bye,
bearophile

Reply via email to