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’"