2015-01-16 2 views
0

내가 64 어셈블리 및 Visual C와 함께 일하고 있어요 ++ 2010/MASM은 명령범용 64 비트 레지스터의 값을 MMX에 쓰는 방법은 무엇입니까?

movq mm0, rax

는 "잘못된 명령 피연산자"가 포함 내게 말하고있다.

이것은 실제로 불법입니까, 아니면 버그 일 수 있습니까? 지침을 사용하지 않고이 절차를 수행하는 방법은 무엇입니까?

+0

시도해보십시오. MOVD mm0, rax' –

답변

1

버그이거나 64 비트 모드 또는 MMX 확장을 지정하지 않았습니다. movq mm0, rax은 기계 코드 48 0F 6E C0의 유효한 명령어입니다. 인텔 명령어 세트 참조를 참조하십시오. 다른 모든 방법이 실패하면 머신 코드를 데이터 바이트로 포함 할 수 있습니다.

즉, MMX는 더 이상 사용되지 않습니다 (특히 64 비트 모드에서는 기본적으로 SSE2가 있기 때문에). 정말로 사용하고 싶은지 확인하십시오.

+0

"[...] MMX 확장을 지정하지 않으 셨습니다"라는 의미는 무엇입니까? – Dziugas

+0

'masm'을 모르지만'mmx' 코드를 사용하기위한 옵션이나 지시어가 필요할 수도 있습니다. 여기에 가서, [msdn says] (http://msdn.microsoft.com/en-us/library/0e9yd754.aspx)'.mmx' 지시문을 사용해야합니다. – Jester

관련 문제