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,

 

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

 

I have following code :

 

struct context {

 

            unsigned long mask[8];

} CONTEXT;

 

int main()

{

            CONTEXT sr;

            sr.mask[5] = 0x8FED;

 

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

            return 0;

}

 

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

 

I tried changing the code something like this :

 

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

 

Still error is same, then I tried following:

 

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

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

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

 

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

 

Thanks,

-- Kiran P.




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