위 명령어들의 동작을 최대한 간단하게(;;) 요약해 보았습니다. 너무 간단하게 한건 아닌지 모르겠네요... 혹시 틀린점이 있거나 좀 더 자세한 내용을 원하시면 답글을 달아주세요~ ^^
MOVLHPS : xmm2의 하위 8바이트로부터 두개의 packed된 단일정밀도 실수형 값을 xmm1의 상위8바이트로 옮긴다
예)MOVLHPS xmm1, xmm2
MOVLPD : m64로부터 정밀도2배 실수형 값을 mmx레지스터의 하위8바이트로 옮긴다.
예)MOVLPD xmm, m64
예)MOVLPD m64, xmm (위와 반대의 동작을 함)
MOVLPS : m64로부터 단일정밀도 실수형 값을 mmx레지스터의 하위8바이트로 옮긴다.
예)MOVLPS mmx, m64
예)MOVLPS m64, mmx(반대의 동작)
MOVMSKPD : xmm으로부터 2비트의 부호마스크를 가져와 r32 또는 r64레지스터에 저장(store)한다
예)MOVMSKPD r32, xmm
예)MOVMSKPD r64, xmm
MOVMSKPS : xmm으로부터 4비트의 부호마스크를 가져와 r32또는 r64레지스터에 저장.
예) 위와동일
MOVNTDQ : non-temporal hint(비-시간적 암시(?))를 이용하여 xmm의 16바이트를 16바이트크기의 메모리에 저장
예) MOVNTDQ m128, xmm
MOVNTI : non-temporal hint를 이용하여 r32의 4바이트를 4바이트크기의 메모리에 이동
예) MOVNTI m32, r32 (64비트크기도 적용가능)
MOVNTPD : non-temporal hint를 이용하여 xmm의 16바이트 정밀도2배 실수형 값을 16바이트 크기의 메모리에 이동
예) MOVNTPD m128, xmm
MOVNTPS : non-temporal hint를 이용하여 xmm의 16바이트 단일정밀도 실수형 값을 16바이트 크기의 메모리에 이동
예) MOVNTPS m128, xmm
MOVNTQ : non-temporal hint를 이용하여 MMX레지스터의 8바이트를 8바이트 크기의 메모리에 이동
예) MOVNTQ m64, mm
MOVQ : xmm레지스터와 MMX레지스터, 메모리간의 8바이트 이동
예) MOVQ mm, mm/m64
MOVQ2DQ : mmx의 8바이트를 xmm의 하위 8바이트로 이동
MOVS/MOVSB/MOVSW/MOVSD/MOVSQ : DS:(E)SI의 주소로부터 명령어 해당 바이트만큼 ES::(E)DI로 이동 (뒤에붙는 –B, -W등은 이동할 데이터의 크기를 나타냄)
예) MOVS m8, m8
MOVSD : xmm2/m64로부터 스칼라 정밀도2배 실수형 값을 xmm1레지스터로 이동
예) MOVSD xmm1, xmm2/m64
MOVSHDUP : xmm2/m128의 각 8바이트중 상위 32비트 오퍼랜드로부터 두개의 단일정밀도 실수형 값을 xmm1로 이동. 그리고 각 32비트 오퍼랜드를 각 8바이트중 하위 32비트에 복제한다.
예) MOVSHDUP xmm1, xmm2/m128
MOVSLDUP : xmm2/m128의 각 8바이트중 하 32비트 오퍼랜드로부터 두개의 단일정밀도 실수형 값을 xmm1로 이동. 그리고 각 32비트 오퍼랜드를 각 8바이트중 상위 32비트에 복제한다.
예) MOVSLDUP xmm1, xmm2/m128
MOVSS :
xmm2/m32의 스칼라 단일정밀도 실수형 값을 xmm1레지스터로 이동
예) MOVSS xmm1, xmm2/m32
xmm1레지스터의 스칼라 단일 정밀도 실수형 값을 xmm2/m32로 이동
예) MOVSS xmm2/m32, xmm
MOVSX/MOVSXD :
MOVSX r16, r/m8 : 바이트를 워드로 부호확장함
MOVSX r32, r/m8 : 바이트를 더블워드로 부호확장함
MOVSX r64, r/m8 : 바이트를 쿼드워드로 부호확장함
MOVSX r32, r/m16 : 워드를 더블워드로 부호확장함
MOVSX r64, r/m16 : 워드를 쿼드워드로 부호확장함
MOVSXD r64, r/m32 : 더블워드를 쿼드워드로 부호확장함
MOVUPD : xmm2/m128 과 xmm1간의 packed된 정밀도2배 실수값 이동명령
예) MOVUPD xmm1, xmm2/m128
예) MOVUPD xmm2/m128, xmm1
MOVLHPS : xmm2의 하위 8바이트로부터 두개의 packed된 단일정밀도 실수형 값을 xmm1의 상위8바이트로 옮긴다
예)MOVLHPS xmm1, xmm2
MOVLPD : m64로부터 정밀도2배 실수형 값을 mmx레지스터의 하위8바이트로 옮긴다.
예)MOVLPD xmm, m64
예)MOVLPD m64, xmm (위와 반대의 동작을 함)
MOVLPS : m64로부터 단일정밀도 실수형 값을 mmx레지스터의 하위8바이트로 옮긴다.
예)MOVLPS mmx, m64
예)MOVLPS m64, mmx(반대의 동작)
MOVMSKPD : xmm으로부터 2비트의 부호마스크를 가져와 r32 또는 r64레지스터에 저장(store)한다
예)MOVMSKPD r32, xmm
예)MOVMSKPD r64, xmm
MOVMSKPS : xmm으로부터 4비트의 부호마스크를 가져와 r32또는 r64레지스터에 저장.
예) 위와동일
MOVNTDQ : non-temporal hint(비-시간적 암시(?))를 이용하여 xmm의 16바이트를 16바이트크기의 메모리에 저장
예) MOVNTDQ m128, xmm
MOVNTI : non-temporal hint를 이용하여 r32의 4바이트를 4바이트크기의 메모리에 이동
예) MOVNTI m32, r32 (64비트크기도 적용가능)
MOVNTPD : non-temporal hint를 이용하여 xmm의 16바이트 정밀도2배 실수형 값을 16바이트 크기의 메모리에 이동
예) MOVNTPD m128, xmm
MOVNTPS : non-temporal hint를 이용하여 xmm의 16바이트 단일정밀도 실수형 값을 16바이트 크기의 메모리에 이동
예) MOVNTPS m128, xmm
MOVNTQ : non-temporal hint를 이용하여 MMX레지스터의 8바이트를 8바이트 크기의 메모리에 이동
예) MOVNTQ m64, mm
MOVQ : xmm레지스터와 MMX레지스터, 메모리간의 8바이트 이동
예) MOVQ mm, mm/m64
MOVQ2DQ : mmx의 8바이트를 xmm의 하위 8바이트로 이동
MOVS/MOVSB/MOVSW/MOVSD/MOVSQ : DS:(E)SI의 주소로부터 명령어 해당 바이트만큼 ES::(E)DI로 이동 (뒤에붙는 –B, -W등은 이동할 데이터의 크기를 나타냄)
예) MOVS m8, m8
MOVSD : xmm2/m64로부터 스칼라 정밀도2배 실수형 값을 xmm1레지스터로 이동
예) MOVSD xmm1, xmm2/m64
MOVSHDUP : xmm2/m128의 각 8바이트중 상위 32비트 오퍼랜드로부터 두개의 단일정밀도 실수형 값을 xmm1로 이동. 그리고 각 32비트 오퍼랜드를 각 8바이트중 하위 32비트에 복제한다.
예) MOVSHDUP xmm1, xmm2/m128
MOVSLDUP : xmm2/m128의 각 8바이트중 하 32비트 오퍼랜드로부터 두개의 단일정밀도 실수형 값을 xmm1로 이동. 그리고 각 32비트 오퍼랜드를 각 8바이트중 상위 32비트에 복제한다.
예) MOVSLDUP xmm1, xmm2/m128
MOVSS :
xmm2/m32의 스칼라 단일정밀도 실수형 값을 xmm1레지스터로 이동
예) MOVSS xmm1, xmm2/m32
xmm1레지스터의 스칼라 단일 정밀도 실수형 값을 xmm2/m32로 이동
예) MOVSS xmm2/m32, xmm
MOVSX/MOVSXD :
MOVSX r16, r/m8 : 바이트를 워드로 부호확장함
MOVSX r32, r/m8 : 바이트를 더블워드로 부호확장함
MOVSX r64, r/m8 : 바이트를 쿼드워드로 부호확장함
MOVSX r32, r/m16 : 워드를 더블워드로 부호확장함
MOVSX r64, r/m16 : 워드를 쿼드워드로 부호확장함
MOVSXD r64, r/m32 : 더블워드를 쿼드워드로 부호확장함
MOVUPD : xmm2/m128 과 xmm1간의 packed된 정밀도2배 실수값 이동명령
예) MOVUPD xmm1, xmm2/m128
예) MOVUPD xmm2/m128, xmm1
댓글 0
.