Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Jun 2007 14:11:10 -0700
From:      "Patil, Kiran" <kiran.patil@intel.com>
To:        <freebsd-questions@freebsd.org>
Cc:        "Patil, Kiran" <kiran.patil@intel.com>
Subject:   Need help with GNU assembly
Message-ID:  <4AFE4AEEFA305C4BB82F73F4D819506001B50C43@orsmsx420.amr.corp.intel.com>

next in thread | raw e-mail | index | archive | help
Hi All,

=20

I am trying to use GNU assembly. I am trying simple thing such as ,
moving content of memory location into general purpose register (ax).

=20

I have following code :

=20

struct context {

=20

            unsigned long mask[8];

} CONTEXT;

=20

int main()

{

            CONTEXT sr;

            sr.mask[5] =3D 0x8FED;

=20

            __asm ( "movw %0, %ax" : : "m" (*(unsigned
short*)sr.mask[5]) );

            return 0;

}

=20

Compiler complains with error "bad substitution directive in asm
instruction".

=20

I tried changing the code something like this :

=20

__asm ( "movw %0, %ax" : : "m" (*(unsigned short*)sr.mask+5) );

=20

Still error is same, then I tried following:

=20

            Unsigned short* ptemp =3D &sr.mask[5];

            __asm ( "movw %0, %ax" : : "m" (*(unsigned short*)ptemp) );

But still no luck, compiler reported same error as mentioned above

=20

Any help is appreciated. Please let me know where I am mistake.

=20

Thanks,

-- Kiran P.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4AFE4AEEFA305C4BB82F73F4D819506001B50C43>