.data mem128a dword 1.0, 2.0, 3.0, 4.0 ;wektor podwójnych słów mem128b qword 1.0, 2.0 ;wektor poczwórnych słów mem128c qword 1, 2 ;wektor poczwórnych słów .code Main proc ;MOVUPS (niewyrównane) vs. MOVAPS (wyrównanie wymagane) ;MOVUPD (niewyrównane) vs. MOVAPD (wyrównanie wymagane) ;MOVDQU (niewyrównane) vs. MOVDQA (wyrównanie wymagane) ;[i] Pamięć, która jest wyrównana do 16 bajtów ;posiada adres, który jest wielokrotnością dwójki. movups xmm0, mem128a ;kopiowanie wektora czterech niewyrównanych wartości zmiennoprzecinkowych pojedynczej precyzji z pamięci do rejestru XMM0 movaps xmm1, xmm0 ;w przypadku kopiowania między rejestrami warto używać wersji z wyrównaniem movupd xmm0, mem128b ;kopiowanie wektora czterech niewyrównanych wartości zmiennoprzecinkowych podwójnej precyzji z pamięci do rejestru XMM0 movapd xmm1, xmm0 ;w przypadku kopiowania między rejestrami warto używać wersji z wyrównaniem ;MOVDQU - kopiowanie dwóch poczwórnych słów bez wyrównania mov rdx, offset mem128c ;adres pamięci mem128c do rejestru RDX movdqu xmm0, xmmword ptr [rdx] ;wartość spod adresu w RDX do rejestru XMM0 movdqa xmm1, xmm0 ;w przypadku kopiowania między rejestrami warto używać wersji z wyrównaniem ;(...) ret Main endp end