asm code and an inout function argument

Vladimir A. Reznichenko kalessil at gmail.com
Fri May 15 03:41:35 PDT 2009


Denis Koroskin Wrote:

> On Fri, 15 May 2009 14:24:16 +0400, Vladimir A. Reznichenko <kalessil at gmail.com> wrote:
> 
> > I have a function:
> >
> > void test (inout uint a)
> > {
> > 	asm
> > 	{
> > 		mov a, 0x25;
> > 	}
> > }
> >
> > The trouble is that the function's call doesn't change the a variable.
> > Any ideas?
> >
> 
> I believe your code is incorrect. This is how it should be done:
> 
> import std.stdio;
> 
> void test (out uint a)
> {
>     asm
>     {
>         mov EDX, a;
>         mov [EDX], 0x25;
>     }
> }
> 
> void main()
> {
>     uint a = 0;
>     test(a);
>     
>     writefln("0x%x", a);
> }
> 
> Perhaps, errors like yours could be flagged at compile time? If so, an enhancement request would be nice.


Thank you, Denis.



More information about the Digitalmars-d mailing list