6
조립시 겉으로보기에 사소한 문제 : 전체 XMM0 레지스터를 XMM3에 복사하려고합니다. 나는 XMM 레지스터간에 128 비트 값을 어떻게 이동합니까?
movdq xmm3, xmm0
을 시도했지만 MOVDQ 두 XMM 레지스터 사이의 값을 이동하는 데 사용할 수 없습니다. 대신 무엇을해야합니까?
그것은
movapd
의
조립시 겉으로보기에 사소한 문제 : 전체 XMM0 레지스터를 XMM3에 복사하려고합니다. 나는 XMM 레지스터간에 128 비트 값을 어떻게 이동합니까?
movdq xmm3, xmm0
을 시도했지만 MOVDQ 두 XMM 레지스터 사이의 값을 이동하는 데 사용할 수 없습니다. 대신 무엇을해야합니까?
그것은
movapd
의
, movaps
, 또는
movaps xmm3, xmm0
movdqa
그들은 모두 같은 일을하지만, 캐치가있다 :
movapd
및 movaps
는 부동 소수점 도메인에서 운영하고 있습니다.movdqa
는 정수 도메인를 사용하여 도메인 변경 노점을 피하기 위해 데이터 형식에 따라 적절한 하나에서 작동합니다.
또한 movapd
을 사용할 이유가 없습니다. movapd
이 인코딩 할 때 여분의 바이트를 사용하므로 항상 movaps
을 사용하십시오.
movdqa는 내가 찾고 있던 것입니다 :) 감사합니다. 그건 빨리 :) PS. 부동 소수점 이동은 실제로 정수와 어떻게 다릅니 까? 나에게 모두 간단한 복사해야합니다 ... – lampak
인텔 프로세서에 별도의 FP 및 정수 단위가 있습니다. 한 단위에있는 명령을 실행하면 값이 해당 단위로 이동합니다. 그러나 다른 도메인에서 그 값으로 명령을 내리면 1-2 단위 패널티로 새 단위로 이동해야합니다. 따라서 가능한 경우 도메인에 값을 유지하는 것이 가장 좋습니다. 따라서 다른 'mov'지침이있는 이유는 무엇입니까? 만약 정수 연산을하고'movaps'를 사용한다면, 그 값을 FP 유닛으로 옮기기 위해서 페널티를 지불 할 것이고, 다음 정수 명령으로 되돌릴 때 다른 페널티를 돌려 줄 것입니다. – Mysticial
'por','orps' 및'orpd'와 같은 논리 연산자에도 동일하게 적용됩니다. – Mysticial