Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

065
557
421925


[공유] Arm 아키텍처 관련 원고 및 PPT 표기 방식 #이제는 Arm의 시대

아래 내용은 Arm 아키텍처를 구성하는 내용을 설명할 때 표기 방식을 담고 있다.
내용은 추가되거나 업데이트될 수도 있다.

1. 레지스터 표기

  1.1 기본적으로 레지스터는 대문자로 표기한다.

      ex) MOV R0, 0x1
      ex) SP_EL1, TTBR1_EL1, X0

      예제로 작성한 명령어와 레지스터는 모두 대문자로 변경한다.(by 김동현)

  1.2 익셉션 핸들러에서 보이는 레지스터가 소문자인 경우 그대로 표기해 설명한다.

      ex) mov x0, 0x1

  1.3 레지스터를 처음 소개할 때를 제외하고 '레지스터'란 단어는 명시하지 않는다. 

      before) r14_und 레지스터의 데이터를 r0 레지스터에 저장한다.
      after)    R14_UND 값을 R0에 저장한다.

  1.4 시스템 레지스터도 다른 레지스터와 같이 표기한다.

     ex) TTRB1_EL1 레지스터는 'Translation Table Base Register 0' 로 불리며...(소개할 때)
          X0의 값이 TTRB1_EL1에 저장된다. // 명령어를 분석할 때

2. 주소와 비트 표기 방법

  2.1 기본으로 주소는 대문자로 표기한다.

  2.2 16진수로 표기된 주소 앞에는 모두 0x를 붙힌다.  

  2.3 2진수는 앞에 0b로 표기한다. (근거: Arm 스펙 문서에서 이 방식으로 표기함)
     
      ex) 100000 -> 0b100000

  2.4 예제로 든 명령어와 함께 쓰이는 주소는 모두 16진수를 대문자로 표기한다.

  2.5 어셈블리 명령어가 소문자인 경우 주소는 같이 소문자로 표기한다.  

3. 어셈블리 명령어

  3.1 어셈블리 명령어 대문자로 표기한다.
      예제로 작성한 명령어와 레지스터는 모두 대문자로 변경한다.(by 김동현)

  3.2 익셉션 핸들러에서 보이는 명령어가 소문자인 경우 그대로 표기해 설명한다.

      ex) mov x0, 0x1

  3.3 명령어를 분석할 때 '어셈블리 명령어' 대신 명령어로 표기한다.

      ex) mov x0, 0x1 // mov 명령어는 0x1를 x0에 이동하는 기능입니다. 

4. 익셉션 표기 방법

   4.1 Armv7 익셉션

       4.1.1 메모리 어보트 관련
           데이터 어보트, 프리페치 어보트, Undefined Instruction 어보트
           
           ; Undefined Instruction을 정의되어 있지 않은 명령어로 표기하면 더 어색하므로
             용어 그대로 표기한다.

       4.1.2 인터럽트 관련 익셉션
          IRQ 익셉션, FIQ 익셉션 

          ; IRQ 익셉션을 소개할 때 'IRQ(Interrupt) 익셉션'로 한번만 표기하고
            이후 IRQ 익셉션으로 표기한다. <Arm 스펙 문서에서 이 방식으로 설명하기 때문>

          ; FIQ 익셉션을 소개할 때 'FIQ(Interrupt) 익셉션'로 한번만 표기하고
            이후 FIQ 익셉션으로 표기한다. <Arm 스펙 문서에서 이 방식으로 설명하기 때문>

   4.2 Armv8 익셉션

       4.2.1 메모리 어보트 관련 익셉션 클래스 설명
           데이터 어보트, 프리페치 어보트, Undefined Instruction 
           
       4.2.2 Asynchronous 타입 익셉션 표기 방식
           ; IRQ 익셉션, FIQ 익셉션, SError 익셉션 
          
           ex) IRQ 인터럽트 익셉션(x) -> IRQ 익셉션(o)
 
        4.2.3 Synchronous 익셉션은 그대로 표기한다.

           ; Synchronous 익셉션을 '동기적인 익셉션' 혹은 '동기 익셉션'으로 
             실전 개발이나 연구소에서 사용하지는 않는다.

        4.2.4 Unknown reasons 
          
           ; 익셉션 클래스 중에 Unknown reasons가 있는데, 명확한 의미는 '기타 등등'이다.
            익셉션 클래스로 명시하기 애매한 세부 유발인자는 Unknown reasons로 분류한다.

           ; Unknown reasons를 한글로 바꿔서 설명하면 오해를 일으킬 여지가 있어
             그대로 'Unknown reasons'로 표기한다.              

5. 익셉션 레벨(Armv8)

   5.1 EL0

       업계에서는 '이엘 제로' 혹은 '익셉션 레벨 제로'로 부른다.
       '이엘 영'이나 '익셉션 레벨 영'으로 부르는 경우는 거의 없다.

   5.2 EL1

       업계에서는 '이엘 원' 혹은 '익셉션 레벨 월'로 부른다.
       '이엘 일'이나 '익셉션 레벨 일'으로 부르는 경우는 거의 없다.

   5.3 EL2

       업계에서는 '이엘 투' 혹은 '익셉션 레벨 투'로 부른다.
       '이엘 이'이나 '익셉션 레벨 이'으로 부르는 경우는 거의 없다.

   5.4 EL3

       업계에서는 '이엘 쓰리' 혹은 '익셉션 레벨 쓰리'로 부른다.
       '이엘 삼'이나 '익셉션 레벨 삼'으로 부르는 경우는 거의 없다.

덧글

댓글 입력 영역