ARM ASSEMBLY |
◆2.Microprocessor 아뜰리에 - ARM을 파헤쳐 보자
◉6.ARM Exception과 Modes(P.123)
●Software 실행 중, Exception이 발생(P.127)
- 고려해야 할 것들.
- 1) Exception mode가 발생 한 후, 이전 mode로 돌아갈 수 있어야 한다.
- 2) 지금 쓰던 Register 값들을 다시 사용할 수 있어야 한다.
- 이전에 쓰던 Context를 다시 복원할 수 있어야 한다.
- 3) 이전 mode로 돌아갔을 때 원래 수행 하던 곳으로 돌아 갈 수 있어야 한다.
- 4) 그리고 자동으로 해당 Exception Vector로 이동해야 한다.
- Exception에 발생에 의한 하드웨어적인 처리.
- 1) CPSR(SVC)을 SPSR_irq에 복사한다.
- 2) CPSR의 mode를 IRQ로 변경, 결과적으로 stack pointer도 IRQ mode의 stack pointer로 변경한다.
- 3) IRQ disable 함, ARM mode로 변경한다.
- ARM mode로 변경
- Exception이 발생하면 무조건 32bit ARM mode로 ARM state가 바뀐다.
- IRQ disable하는 법
- CPSR의 I bit를 1로, ARM mode도 T bit를 0으로 setting하면 된다.
- 4) R14_irq := 현재 PC
- 5) 그러고 나서 어떤 일이? IRQ Exception Vector 주소인 0x12로 가야 한다.
- PC : = 0x12 이에요.
- Exception에 발생에 의한 소프트웨어적인 처리.
- 6) R0~R12를 R13_irq (stack pointer)가 가리키는 stack에 저장한다.
- 7) 돌아갈 주소를 보정합니다.
- R14_irq (LR) = PC
- interrupt 걸린 순간에는 pipe line에 의해서 2개 opcode가 이미 진행되었으니까, sub lr, lr, #4 처럼 lr을 보정해야 한다.
- Exception 처리
를 다하고 돌아갈 때는? - backup 했던 넘들을 다시 가져오면 되겠죠. 이건 Software 적으로 알아서 해줘야 해요. 올 때는 자동으로 와도, 갈 때는 편의를 봐주지 않아요. 젠장찌게.
- 위의 과정들을 그림으로 표현하면 다음과 같다.
- arm은 accumulator가 없다.
- 반대로 말하면, 대부분의 레지스터가 accumulator이다.
- : 파스칼
- R0~R3을 다시 사용하면, 오염되었을 수 있다.
- 함수에 결과에 의해 값이 보장되지 않고 변한다.
- 다시 사용하려면, 백업을 하고 사용해야한다.
- 인텔의 경우 eax만 변한다.
- 나머지는 변하지 않는다.
- AAPCS에 의한 레지스터 사용법
- Register뿐만 아니라 Synonym, Special로 표기해도 인지가 가능하다.
- 레지스터의 용량을 초과하는 경우도 있다.
- 예를 들어 구조체의 경우 1개씩 차곡차곡 복사한다.
- 중간 파일을 생성해서 확인할 수 있다.
- Visual Studio로 확인할 수도 있다.
- 가능하면 주소로 복사하여 사용하는 게 좋다.
- 함수의 인자 4개, 내부변수 7개까지는 레지스터에 할당된다.
- 4byte기준이다.
- 넘게 되면 stack에 저장 후에 사용해야하며, 끝나기 전에 복원도 해주어야 한다.
- 매우 번거롭다.
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20151127 임현수 업무일지 ARM #2 함수호출규약 (6) | 2015.11.29 |
---|---|
20151128 엄민웅 - arm 임베디드레시피 이론 수업 (교제 127~161) (7) | 2015.11.28 |
20151127 - 홍준모 ARM~>ASM 2일 차 - 126p~ (7) | 2015.11.27 |
20151127-김재홍-ARM_Assembly_2일차 (6) | 2015.11.27 |
2015.11.26_개인업무일지_[ASM #1]_주재민_mode (7) | 2015.11.27 |
2015.11.26_개인업무일지_[ASM #1]_이량경_mode (9) | 2015.11.27 |
20151126 업무일지 -여지윤- ARM Assembly (9) | 2015.11.27 |
20151126_안향진_ARM어셈블리_1 (8) | 2015.11.27 |