2009-12-09 5 views
2

objdump를 사용하여 바이너리를 이해하고 ASM 구문이 유창하지 않다는 것을 알고 있습니다. 다음 개념은 무엇을 의미합니까?"-0x1 (% edx, % ecx, 1)"은 objdump 출력에서 ​​무엇을 의미합니까?

xor %al,-0x1(%edx,%ecx,1) 

당신이있는 동안 - 그런 개념에 관한 문서를 찾으려면 무엇을 검색해야합니까?

+0

참고로, 나는 xor가 무엇을 의미하는지 알고있다.), 나는 단지 괄호 표현을 이해하지 못한다. – BjoernD

답변

9

괄호는 메모리 오프셋입니다

-0x1(%edx,%ecx,1) (& T 구문은 AT) (귀하의 요청에 따라) AT&T assembly syntax에 대한

빠른 가이드 [edx+ecx*1-1] (인텔 문법)과 동일하다.

+0

링크가 끊어졌습니다. – gsingh2011

+0

다음은 [** Intel 및 AT & T Syntax **] (http://www.imada.sdu.dk/Courses/DM18/Litteratur/IntelnATT.htm)의 병렬보기입니다. –

3

이것은 'a'레지스터의 하위 바이트 (% al)와 32 비트 와이드 레지스터 'd'(% edx)의 합계 인 주소에서의 메모리 내용), 'c'에 1 (% ecx, 1) 및 -1을 곱한 값입니다. 결과는 % al에 다시 기록됩니다.

al ^= (char*)(edx+ecx*1 - 1); 
C

에서 당신은 sandpile이나 인텔/AMD 설명서에 이런 물건을 조회 할 수 있습니다.

관련 문제