Переместить [eax + 4] в VS

Я не могу скомпилировать это, как мне переместить [eax + 4] к y в Visual Studio?

float x, y, z;

__asm
{
mov x,      eax
mov y,      [eax+4]
mov z,      [eax+8]
}

РЕДАКТИРОВАТЬ:
«Ошибка 1, ошибка C2424:« + »: неправильное выражение во« втором операнде »»

-1

Решение

@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
3

Другие решения

Инструкция MOV не может переместить память в память. Проверьте ваш любимый язык ассемблера для более подробной информации о правилах для каждой инструкции. Если что-то явно не указано как разрешенное, то это не разрешается. Вы не можете просто придумывать вещи. Процессоры очень разборчивы.

10