Author: Matt Taylor
Date: 11:23:31 01/18/03
Go up one level in this thread
On January 18, 2003 at 13:22:02, Dieter Buerssner wrote: >On January 18, 2003 at 05:16:06, Matt Taylor wrote: > >>GCC-style: >>asm("\txorl\t%%eax, %%eax\n >> "\tmovl\t$1, %%edx\n" >> >> "\tshll\t%%cl, %%edx\n" >> "\ttestl\t$32, %%ecx\n" >> "\tmovl\t$0, %%ecx\n" >> >> "\tcmovnzl\t%%edx, %%eax\n" >> "\tcmovnzl\t%%ecx, %%edx\n" >> : "=A" (index) : "c" (count), "A" (1)); > >This is very fragile code. You are not telling the compiler, that you modify >ecx, and the flags register. Does "A" mean the edx:eax pair? The input ("A" (1)) >does not seem to make sense, because you set it in the assembly anyway. > >Regards, >Dieter The code works fine. The GCC manual (as well as the inline asm tutorials) specifies that inputs are modified. Yes, the "A" is edx:eax. You are right about the redundant first two asm instructions. I was very tired. I decided to have gcc load edx:eax with 1 at its convenience, and I forgot to delete the appropraite asm lines. -Matt
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.