mixin assembler does not work?
bearophile via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Jul 20 07:40:10 PDT 2014
Foo:
> Hey guys. Can someone explain me, why this code does only works
> with the inline assembler version but not with the mixin?
You need mixin(), it's unfortunate this gives no error messages:
import std.string: format;
enum Vala(uint count, alias arr) = format("
asm {
sub ESP, %d; // Reserve 'count' bytes
mov %s, %d; // Set a.length = 'count'
mov %s + 4, ESP; // Set &a[0] to reserved bytes
}", count, arr.stringof, count, arr.stringof);
void main() {
import std.stdio: writeln;
ubyte[] a;
a.length.writeln;
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));
}
a.length.writeln;
}
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list