Сборка - загрузить регистр xmm в 32 регистра

У меня есть результат в xmm0. Это одно 32-битное плавающее число. Я пытаюсь загрузить его в 32-разрядный регистр EDX

movss dword ptr [result], xmm0
mov eax, dword ptr [result]

И у меня странный номер в eax... Я думал, что это адрес, но это не потому, что я пытался понять, что стоит за этим адресом.

Моя вторая идея была:

movd eax, xmm0

Но это дает мне тот же результат, что и первый. Кто-нибудь знает, как правильно загрузить плавающее число из регистра xmm в 32-битный регистр?

1 ответ

Если вы хотите, чтобы результат был преобразован из числа с плавающей запятой одинарной точности в целое, используйте

cvtss2si r32, xmm

Существуют и другие инструкции по преобразованию, например, для преобразования 4 упакованных чисел в 4 упакованных 32-битных целых числа:

cvtps2dq xmm, xmm

Руководство Intel по встроенным функциям может быть удобно для поиска по функциям, и, конечно, руководство Intel insn ref содержит полную информацию по всем вопросам с указателем, содержащим сводки. Ссылки на них и другие важные материалы, такие как руководства Агнер Фог, можно найти по адресу https://stackru.com/tags/x86/info.

Другие вопросы по тегам