2012-06-25 1 views
1

분기 명령어로 상대 주소 지정 만 사용하려는 부트 코드를 작성하고 있습니다.gcc powerpc 어셈블리를 사용하여 절대 및 상대 분기를 만드는 방법

110: lwz r4,0(r6) 
     ... 
     ... 
    b 110b 

분기의 대상은 모든 수치와 분기 명령 레이블 후 문자 'B'를 가지고있는 레이블 :

나는 다음과 같은 어셈블리 코드를 발견했습니다. 나는 'b'가 뒤를 가리킨다 고 가정합니다. 나는 또한 앞으로 나아갈 것이라고 생각하는 'f'를 보았습니다.

이 표기법은 상대 주소 지정을 의미하는 것으로 보이지만 그러한 진술을 찾을 수는 없습니다.

'f'또는 'b'가 사용 된 표기법은 상대적인 분기를 보장하는 유일한 메커니즘입니까? 또는 영숫자 레이블 (더 의미있는 이름)을 f/b 접미사와 함께 사용할 수 있습니까?

gcc 크로스 컴파일러를 사용하고 있습니다.

답변

1

상대/절대 구분은 사용 된 명령어에서 추론됩니다. 어셈블러가 원하는 것을 추측 할 필요는 없습니다. PPC의 경우 :

b 110b ; relative 
ba 110b ; absolute 
+0

고맙다. 필자의 유일한 PowerPC 가이드 인 "PowerPC ™ 아키텍처의 32 비트 구현을위한 프로그래밍 환경 설명서"를 절대 읽는 데 'a'를 사용하지 않았습니다. 그것은 둔한 장소입니다. – KeithSmith

+0

[출처] (https://www.power.org/resources/downloads/)로 이동하지 않으시겠습니까? –

+0

이고르 - 참고해 주셔서 감사합니다. 많은 문서. 그러나 '출처'의 문서는 내가 인용 한 가이드와 매우 유사합니다. 표는 표기법과 동일합니다. 둘 다 사용자가 아닌 어셈블러 작성자를 대상으로하는 참조 가이드입니다. 참조 가이드로서 그들은 매우 완전하지만, PowerPC 어셈블리에 초보자를위한 나의 첫 번째 선택하지. – KeithSmith

1

다른 질문에 대한 답변은 Symbol Names에 가스 문서에 있습니다

모든 숫자 레이블 "지역 라벨"하고 고유 한을 발명 할 필요가 없습니다 사용 각 라벨의 이름; 나는 이것이 매크로 내에서 특히 유용하다고 상상한다. b/f 접미어는 이름이 고유 할 필요가 없으므로 참조 할 레이블을 알아내는 데 필요합니다 (파서에 정수 즉시 대신 로컬 레이블임을 알려줍니다).