Рассмотрим следующий кодПочему этот код не компилируется, когда компилятор создает точно такой же тип команды из C++ кода
int a = 10;
int b = 2;
int c = 0;
int asmdivide(void);
int main(int argc, char* argv[])
{
c = a/b;
asmdivide();
return 0;
}
int asmdivide()
{
__asm
{
push dword ptr[a]
push dword ptr[b]
pop ecx
idiv ecx, dword ptr[a] //causes compile error
push ecx
pop dword ptr[c]
}
return c;
}
почему эта линия idiv ecx, ds:dword ptr[a] //causes compile error
вызвать ошибку компиляции, когда компилятор генерирует эту команду idiv eax,dword ptr ds:[1308004h]
из этой строки `int b = 2;
Ошибка выводимый
error C2414: illegal number of operands
Пожалуйста, смотрите скриншот ниже для вывода сборки
Я использую Visual Studio 2013. Любое объяснение будет цениться
Еще не компилировать с той же ошибкой –