On Tue, Jul 24, 2012 at 2:31 PM, Sergey Ivanov <icegood1980@xxxxxxxxx> wrote: > Have code: > #define MoveIntArrayToRight(IntCnt, LastSrcPos) \ > __asm__ __volatile__ \ > ( \ > "std\n\t" \ > "movl 4(%%esi), %%edi\n\t" \ > "rep\n\tmovsl\n\t" \ > "cld\n\t" \ > : \ > :"S" (LastSrcPos), "c" (IntCnt) \ > : "%ecx", "%esi", "%edi" , "cc", "memory" \ > ) > > why compiler says > "error: can’t find a register in class ‘CREG’ while reloading ‘asm’" Because you said that IntCnt has a constaint "c", which means it must be in %ecx, and you've also said that the asm clobbers %ecx, meaning that no values can be placed in it. The asm is unsatisfiable and the compiler simply crashes. Ian