Привет всем. Помогите, пожалуйста с этим гребаным inline-ассембером в gcc. (MinGW) В общем, вот код: Код (Text): void *rtl_memcpy(void *dest, void *src, size_t size) { __asm__( "cld\n\t" "rep\n\t" "movsb" ::"c"(size), "S"(src), "D"(dest) :"cx","si","di"); return dest; } При компиляции к ключами -O2 -c -o test.o test.c пишет: error: can't find a register in class `CREG' while reloading `asm' Если убрать ключ -O2, то все нормально компилируется (и работает). Собственно, вопрос: а почему с ключем -O2 не компилируется?
Гребаный AT&T синтаксис(сам его ненавижу). Вот почитай: http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
to Microedition Если для Вас все еще актуален данный вопрос, то следующий код компилируется успешно*: Код (Text): typedef unsigned int size_t; void *rtl_memncpy(void *dest, void *src, size_t size) { __asm__ __volatile__ ( "cld\n\t" "rep\n\t" "movsb" :: "c" (size), "S" (src), "D" (dest)); return dest; } * MinGW, gcc-3.4.5