2012-08-29 2 views
1

조립 라인에서이 라인은 무엇을합니까? p15입니다팔 어셈블리에서 주어진 라인은 무엇을하고 각 변수의 목적은 무엇입니까?

mrc p15, 0, %0, c9, c13, 0" : : "r" (counter) 

r15해야하지 다른 사람들은 모두 무엇인가?

무엇이 :: 누구입니까 c9, c1 각 인수의 역할은 무엇입니까?

+1

이것은 GCC 스타일 인라인 어셈블리 - 당신이 자세한 설명을 원한다면 당신도 주변의 코드를 게시해야한다. –

답변

2

는 일반적인 코 프로세서 간 연산 명령 cp15제어 프로세서된다 캐시, MMU, 성능 모니터링 및 기타 많은 기능과 같은 온칩 장치에 적합합니다.

MRC{cond} P15, <Opcode_1>, <Rd>, <CRn>, <CRm>, <Opcode_2>

및 페이지 4-11이에

과 같이 설명 : 명령어 형식 인 ARM Cortex A7 MPCore Reference에 따르면

mrc p15, 0, %0, c9, c13, 0" : : "r" (counter)

:

한 번에 조금 당신의 지시를 촬영 성능 모니터 카운트 레지스터에 CPU 레지스터를 전송하는 것입니다 (저는 count=0이라고 생각합니다. 이것은 성능 카운터를 재설정 한 것입니다).

인라인 어셈블러의 구문과 동일합니다. x86 개요의 경우 this을 참조하십시오. 이는 ARM과 유사 할 수 있습니다.

  • 가변 counter로부터 입력을 받아 로컬 변수에 끝낼 필요하고,이 레지스터는 레지스터의 어떤 출력에 사용되어서는 안된다

    : : "r" (counter)

    는 명령이 있음을 의미 %0.
  • 컴파일러가 (내리 쳤을 때)을 알고 있어야한다고 부작용이 없습니다
+0

무엇이', , '의 약자입니까? – 0x90

1

팔의 보조 프로세서는 다른 프로세서보다 분명하고 눈에 잘.니다. 그럼에도 불구하고 이것은 보조 프로세서 액세스 기능이며 보조 프로세서 인터페이스는 일반적입니다. 이러한 명령은 일반 버스의 항목을 채우는 것처럼 일반적인 것입니다. 이제 팔은 다른 코어에있는 코 프로세서 레지스터가 관련되거나 같지 않은 것보다 더 가능성이 높기 때문에 코 프로세서 레지스터를 다시 사용합니다. 올바른 대답은 팔 웹 사이트 (infocenter.arm.com)로 이동하여 사용하고 있거나 사용중인 프로세서의 코어 및 코어에 대한 팔 팔 (팔 아키텍처 참조 설명서)과 trm (기술 참조 설명서)을 모두 찾으십시오. 하나 또는 두 개의 매뉴얼에서 코 프로세서에 관한 섹션을 가지게 될 것이고 그 섹션으로 밀어 넣으면 코 프로세서 번호가 표시되어 해당 코 프로세서 내에 등록되고 숫자 중 일부는 의미가있을 것입니다. ARM은 일반적으로이 레지스터를 읽으려면 여기에 정확한 명령을 쓰고이 레지스터를 여기에 쓰는 것은 정확한 명령이며, 사용자가 제시 한대로이 명령을 사용합니다. 코드에서 코드로 거꾸로 돌아가고 싶다면 매뉴얼의 해당 섹션으로 빠르게 빠져 나와 지침을 빨리 찾은 다음 특정 핵심 또는 제품군에서 수행하는 작업을 빠르게 볼 수 있다는 것을 알게 될 것입니다. 다른 방법으로는 챕터와 섹션 제목을보고 관심있는 레지스터를 찾은 다음 해당 제목을 조작하는 데 사용되는 명령 구문을 찾습니다.

: : double 콜론까지는 인라인 어셈블리에서 가져온 것으로 생각합니다. 이것은 인라인 어셈블리, 컴파일러와 관련이 있으며 팔 명령과 전혀 관련이 없으며 팔 명령은로 끝납니다. 명령어 세트를 확장하는 수단 된 모든 현대 ARM CPU를 가지고 이것은 ARM에 의해 사용 된 - C13, MRC하다 니 0

관련 문제