Arm Assemble

레지스터 r0~r15까지 16개 사용 가능

Special Purpose General Register==========
    유저가 프로그램 할 때 레지스터 지정을 위해 사용할 수 있는 키워드

    r15 (Program Counter, PC)

    r13 (Stack Pointer, SP)
          : 스택을 위한 명령어가 따로 없다.
             push, pop의 기능을 일반 데이터 전송 명령을 통해 해결

    r14 (Link Register, lr)
          : 링크 레지스터,
             BL (Branch with Link)을 수행하면, pc(r15)값을 스택이 아니라, lr(r14)에 넣고 분기 번지를
             pc(r15)에 넣어 분기, 스택 사용 않함
             복귀할 때는 "mov pc, lr"이라는 데이터 전송명령으로 복귀
             * 한번의 call만 하는 경우라면, 스택을 사용하지 않기 때문에 속도가 빠르다.


Status Register ==========
    PSR이라고 부른다. 일반적으로는 CPSR(Ccurrent Processor Status Register)이라고 한다.
    32비트의 레지스터가 6개 있다.한번에 모두 사용할 수는 없다.
    PSR은 flag bits, control bits로 나뉜다.
   
    Flag Bits :
          어떤 인스트럭션의 결과을 나타내는 부분 (4비트)
                1) N (Negative/Less than flag)
                         : 연산의 결과가 마이너스 일 때 세트
                2) Z (Zero flag)
                         : 연산의 결과가 0이 일 때 세트
                3) C (Carry/Borrow/Extend flag)
                         : 자리올림이나, 내림이 발생, 그리고 shift연산등에서 세트
                4) V (Overflow flag)
                         : 연산의 결과가 오버플로우인 경우에 세트
    Control Bits :
          인터럽트을 제어하거나, CPU 동작모드를 설정하거나 확인 할 수 있는 bit들
                1) IRQ / FIQ
                         : IRQ, FIQ를 금지 시킬 수 있는 플래그
                2) Mode Bits
                         : M0 ~ M4 의 비트들은 CPU의 6개의 동작 상태를 나타낸다.




powered by performancing firefox




'develop > dogvelop' 카테고리의 다른 글

프로세스 찾아서 지우고 실행하기  (0) 2006.08.21
데몬 프로그램 만들기  (0) 2006.08.21
API & SDK  (0) 2006.06.28
u-boot 상에서 irq로 led테스트  (0) 2006.06.23
에라이 씨발...  (0) 2006.06.23