ASM access to array
bearophile
bearophileHUGS at lycos.com
Tue Feb 1 11:32:51 PST 2011
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
More information about the Digitalmars-d-learn
mailing list