Сборник по задачам и примерам Assembler



         

Описание упакованных и скалярных данных - часть 2


преобразование представлений вершин пирамиды (на месте)

lea si.prizm_l

movlps rxmm0.[si] ;rxmm0=? ? уО xO

movhps rxmmO,[si+16] ;rxmm0= yl xl yO xO

movlps rxmm2.[si+32] ;rxmm2« ? ? y2 x2

movhps rxmm2.[si+48] ;rxmm2= уЗ хЗ у2 х2

movaps rxmml.rxmmO :rxmml= yl xl yO xO

shufps rxmmO.rxmm2.88h :rxmm0= x3 x2 xl xO

shufps rxmml.rxmm2.0ddh ;rxmml= уЗ у2 yl yO

movlps rxmm2.[si+8] ;rxmm2=? ? wO zO

movhps rxmm2.[si+24] :rxmm2= wl zl wO zO

movlps rxmm4.[si+40] ;rxmm4= ? ? w2 z2

movhps rxmm4,[si+56] ;rxmm4= w3 z3 w2 z2

movaps rxmm3.rxmm2 ;rxmm3= wl zl wO zO

shufps rxmm2.rxmm4.88h :rxmm2= = z3 z2 zl zO

shufps rxmm3.rxmm4.0ddh ;rxmm3= w3 w2 wl wO . -на выходе получим следующее состояние ХММ-регистров:

;RXMM0= хЗ х2 xl xO. RXMM1= уЗ у2 yl yO. RXMM2= ¦ z3 z2 zl zO. RXMM3= w3 w2 wl wO :теперь их необходимо сохранить в памяти:

movups [si].rxmm0

movups [si+16].rxmml

movups [si+32].rxmm2

movups [si+48].rxmm3

Описание скалярных данных намного проще - это обычные значения с плавающей точкой в коротком формате:

.data

seal real dd 1.0 :пример описания скалярного ХММ-значения;




Содержание  Назад  Вперед