2012-03-03 3 views
0

strlen in assembly 의 질문은 어셈블리에서 strlen에 관한 것이지만 AT & T 구문으로 작성된 것 같습니다. 불행히도 내 어셈블러에서는 지원되지 않습니다.인텔 구문은 [eax + ebx]입니다. AT & T 구문은 무엇입니까?

구문 [eax + ebx]을 인텔 구문으로 어떻게 변환하겠습니까?

그래서

4(%eax)  # offset 4 

오프셋 값 %의 EBX에 저장되어 있다고 가정

[eax + 4] 

동일하다.

[eax + ebx] 

의 동등성은 무엇입니까?

%ebx(%eax)  # doesn't work! 

감사합니다,

답변

7

[eax+ebx](%eax,%ebx)로 번역되어야한다.

offset(%reg1,%reg2,scale) 

동등하다 : & T 구문 AT에서의 메모리 어드레스에 대한

전체 구문은

[reg1 + reg2*scale + offset] 

offsetscale 상수 값이며, scale 1, 2이어야 , 4 또는 8입니다. 기본값은 오프셋의 경우 0이고 배율의 경우 1입니다.