Mixin in Inline Assembly

Basile B. via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Jan 10 02:41:54 PST 2017


On Monday, 9 January 2017 at 02:31:42 UTC, Chris M. wrote:
> Right now I'm working on a project where I'm implementing a VM 
> in D. I'm on the rotate instructions, and realized I could 
> *almost* abstract the ror and rol instructions with the 
> following function
>
> private void rot(string ins)(int *op1, int op2)
> {
>     int tmp = *op1;
>     asm
>     {
>         mov EAX, tmp; // I'd also like to know if I could just 
> load *op1 directly into EAX
>         mov ECX, op2[EBP];
>         mixin(ins ~ " EAX, CL;"); // Issue here
>         mov tmp, EAX;
>     }
>     *op1 = tmp;
> }

don't forget to flag

asm pure nothrow {}

otherwise it's slow.


More information about the Digitalmars-d-learn mailing list