2010-11-30 4 views
0

이것은 다소 간단한 질문입니다. 난 그냥 실행 가능한 메모리를 할당하고 그것을 실행하기 위해 수동으로 일부 x86 코드를 조립 놀아 놀고있어. 64 비트 모드에서 주소 지정이 어떻게 작동하는지 약간 혼란 스럽습니다. 내 C 코드에 변수가 있고이 변수에 RAX의 내용을 이동하려면 MOV 명령어의 어떤 형식을 사용해야합니까? (이것은 인라인 어셈블리를 사용하지 않기 때문에 컴파일러가 나를 대신 할 수는 없으며 단지 & var 값을 가지고 놀 수 있습니다.)RAX에서 C로 변수 이동 (x86-64 asm)

답변

2

Intel 구문을 사용하면 mov [var],rax 여기서 var은 기본적으로 64 비트 직접 주소입니다.

나는 인텔이 MOV moffs64*,RAX을 "인텔 ® 64 및 IA-32 아키텍처 소프트웨어 개발자 매뉴얼"이라고 부르는 것으로 생각합니다.

+0

대단히 감사합니다. 그리고이 모습으로 RAX와 소수의 다른 레지스터에서만 가능합니다. – foldl

+1

이 양식은 RAX 전용 (여하튼 64 비트로) 인 것 같습니다. – NPE

+1

이 양식은 모든 GPR에서 작동합니다. 그것은 RAX에 국한되지 않습니다. –