Mail Archives: djgpp/1998/06/28/08:16:00
| Newsgroups:  | comp.os.msdos.djgpp
 | 
| From:  | Elliott Oti <oti AT phys DOT uu DOT nl>
 | 
| Subject:  | Re: DJGPP, inline and GAS
 | 
| Sender:  | usenet AT phys DOT uu DOT nl (News system Tijgertje)
 | 
| Message-ID:  | <Pine.OSF.3.95.980627012915.24169A-100000@ruunat.phys.uu.nl>
 | 
| In-Reply-To:  | <6n0mqf$37j$1@news.worldonline.nl>
 | 
| Date:  | Fri, 26 Jun 1998 23:35:01 GMT
 | 
| References:  | <6n0mqf$37j$1 AT news DOT worldonline DOT nl>
 | 
| Mime-Version:  | 1.0
 | 
| Organization:  | Physics and Astronomy, University of Utrecht, The Netherlands
 | 
| Lines:  | 42
 | 
| To:  | djgpp AT delorie DOT com
 | 
| DJ-Gateway:  | from newsgroup comp.os.msdos.djgpp
 | 
On Fri, 26 Jun 1998, d-range wrote:
> Hi,
> 
> How can I convert the following WATCOM-style pragma to an inlined asm
> function under DJGPP? I tried for hours but I cannot get it to work ;-(
> 
> #pragma aux FixMul= "imul ebx",
>                                       "shrd eax,edx,16",
>                                        parms [eax] [ebx] modify [edx] value
> [eax];
> 
> I tried:
> 
> inline Fixed FixMul(int x, int y) __asm__ (    "imull %%ebx" \
> 
> "shrdl 16,%%edx,%%eax" \
>                                                                           :
> "=a" : "a" (x), "b" (y): "%edx" );
> 
> but I think I'm doing something terribly wrong. the shrd opcode isn't even
> recognized, and GCC (or GAS) gives a parse error before ':'
Try
inline long FixedMul(long x, long y)
{
  long c;
  asm("imull %%ebx              \n"
      "shrdl $16, %%edx, %%eax  \n"
      "=a"(c)
     :"a"(x),"b"(y)
     :"a","b","d"  );
   return c;
}
  Elliott Oti
  kamer 104, tel (030-253) 2516 (RvG)    
  http://www.fys.ruu.nl/~oti
- Raw text -