mixin assembler does not work?
Foo via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Jul 20 07:18:57 PDT 2014
Hey guys. Can someone explain me, why this code does only works
with the inline assembler version but not with the mixin?
Thanks in advance!
Code:
import std.stdio : writeln;
import std.conv : to;
template Vala(uint count, alias arr) {
immutable string c = to!string(count);
enum Vala = "asm { sub ESP, " ~ c ~ "; mov " ~ arr.stringof ~ ",
" ~ c ~ "; mov " ~ arr.stringof ~ " + 4, ESP; }";
}
void main() {
ubyte[] a;
writeln(a.length);
static if (false) {
asm {
sub ESP, 1000; // Reserve 1000 bytes
mov a, 1000; // Set a.length = 1000
mov a + 4, ESP; // Set &a[0] to reserved bytes
}
} else {
mixin Vala!(1000, a);
}
writeln(a.length);
}
More information about the Digitalmars-d-learn
mailing list