Подтвердить что ты не робот

Вставить регистр XMM в стек

Есть ли способ перетащить упакованное двойное слово из регистра XMM в стек? а затем позже поп его обратно при необходимости?

В идеале я ищу что-то вроде PUSH или POP для регистров общего назначения, я проверил руководства Intel, но я либо пропустил команду, либо нет...

Или мне придется распаковывать значения в общие регистры, а затем нажимать их?

4b9b3361

Ответ 1

Нет, нет такой инструкции asm под x86, но вы можете сделать что-то вроде:

//Push xmm0
sub     esp, 16
movdqu  dqword [esp], xmm0

//Pop xmm0
movdqu  xmm0, dqword [esp]
add     esp, 16

EDIT:

Образец верхнего кода - это прямая эмуляция push/pop.

В случае, если вы используете в стеке другие локальные переменные, сначала должен быть установлен регистр ebp, например:

push ebp
mov  ebp, esp
sub  esp, LocaStackVariablesSize
//... your code
mov  esp, ebp
pop  ebp  
ret

В этом случае вы также можете использовать решение Daniels!