Я не могу скомпилировать это, как мне переместить [eax + 4] к y в Visual Studio?
float x, y, z;
__asm
{
mov x, eax
mov y, [eax+4]
mov z, [eax+8]
}
РЕДАКТИРОВАТЬ:
«Ошибка 1, ошибка C2424:« + »: неправильное выражение во« втором операнде »»
@Raymond прав, вы можете использовать временный регистр для его передачи. Убедитесь, что вы не уничтожаете использованный регистр. Например:
mov x, eax
push eax
push ebx
mov ebx, eax ; displacement is only possible with ebp or ebx
mov eax, [ebx+4]
mov y, eax
mov eax, [ebx+8]
mov z, eax
pop ebx
pop eax
Инструкция MOV не может переместить память в память. Проверьте ваш любимый язык ассемблера для более подробной информации о правилах для каждой инструкции. Если что-то явно не указано как разрешенное, то это не разрешается. Вы не можете просто придумывать вещи. Процессоры очень разборчивы.