Сборка - загрузить регистр 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.