2012-09-23 3 views
1

덤프 :명령의 인수 순서가

0x0000000100000de6 <main+0>: push %rbp 
0x0000000100000de7 <main+1>: mov %rsp,%rbp 
0x0000000100000dea <main+4>: sub $0x30,%rsp 
0x0000000100000dee <main+8>: mov %edi,-0x14(%rbp) 

내가 mov %rsp,%rbp을 배웠다는 move the value of rsp to rbp
의미하지만, 그 인텔 설명서에 따르면 move the value of rbp to rsp 을 의미 인텔 아키텍처에 알고 있었다 (인텔 아키텍처 소프트웨어 개발자 설명서 Volume 2. 3-104 MOV instruction),

다음 sub instuction은 동일합니다. 나는 알고 있었다 sub a,ba = a-b를 의미한다. 하지만 여기에 sub $0x30, %rsp 의미 rsp = rsp - 0x30

나에게 무슨 문제가 있습니까?

+2

어디서나'%', 무의미한 메모리 구문 및 불가능해야하는 명령. 모두 AT & T 구문을 가리 킵니다. – harold

답변

2

아무런 문제가 없습니다. 여기에 제시된 내용은 AT & T 구문 (google it)의 어셈블리 코드입니다. 여기서 피연산자 순서는 Intel 설명서의 내용과 반대입니다.

+0

Alexey 대단히 감사합니다! 너의 도움으로 나는이 문서를 봤다. http://stackoverflow.com/questions/972602/att-vs-intel-syntax-and-limitations 다시 한 번 감사드립니다! – plhn