본문 바로가기
dev, tech/embedded

state change example

by 구띵 2006. 7. 13.

;; 링커가 수많은 이미지들을 분류하는 기준 -> 섹션 :AREA(시작)...~~ ...END(끝)

             

               AREA AddReg, CODE , READONLY ;; CODE영역, 속성 : read only

               ENTRY;; binary image 시작, 하나의 섹션에 올 수 있다.

main;; 레이블
               ADR r0, ThumbProg + 1 ;; pc=8009
               BX r0
 

               CODE16;; 이 위치부터 어셈블러가 코드를 만들 때 Thumb코드로 만든다.
               ;; 0번 비트 1 -> cpst의 T비트 1로 변화

ThumbProg

               ;; pc가 2씩 증가
               MOV r2, #2
               MOV r3, #3
               ADD r2, r2, r3
               ADR r0, ARMProg
               BX r0 ;; 0번 비트를 0으로 만들 필요 없음
 
               CODE32;; ARM state
ARMProg
               MOV r3, #4
               MOV r5, #5
               ADD r4, r4, r5
stop
               MOV r0, #0x18
               LDR r1, =0x20026
               SWI 0x123456
 
               END


 ;; 컴파일러 차원에서 제공되는 슈도코드 : 프로그래밍을 쉽게 하도록 하기 위함

 --> ADR, LDR

 

ADR : address of labe -> 현재의 프로그램 카운터의 값을 기준으로 지정된 레이블의 주소값을 gpr에 저장

 

LDR r1, =0x.... 32bits 표현가능한 범위내의 값을 저장(mov의 한계점을 극복가능)

 - code density 와는 무관함

 

 

댓글