ошибка C2400: синтаксическая ошибка встроенного ассемблера во «втором операнде»;найдено "зарегистрироваться" - PullRequest
2 голосов
/ 21 февраля 2011

Я сталкиваюсь с ошибкой компиляции при работе с инструкциями по сборке в VC ++ в виде встроенных блоков ассемблера MACRO.

error C2400: inline assembler syntax error in 'second operand'; found 'register'

Вот код:

_asm {\

        mov esi,dword ptr [pMemBlock]\
        sub esp,sizeOfblock\
        mov ebx,sizeOfblock\
        mov shrResult,ebx\
        shr shrResult,2\
        mov ecx,shrResult\
        mov shrResult,0\
        mov edi,esp\
        rep movs dword ptr es:[edi],dword ptr[esi]\
}

С уважением Усман

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

Это должно быть

_asm {\
    __asm mov esi,dword ptr [pMemBlock]\
    __asm sub esp,sizeOfblock\
    ...

См. эту страницу MSDN .

2 голосов
/ 21 февраля 2011

Эта пустая строка после строки _asm { завершит макрос. Он должен быть удален или иметь \ на нем.

...