■ARM Operaing Mode■
#Mode bits
-ARM의 7가지의 동작모드
#Exception Vector Table
* .text "지금부터 명령어를 실행할것이다" 라는 지시어 (지시어는 용량을 차지 하지 않는다)
* RESET,MAIN ..등등 을 label이라고 한다.
* swi가면 무조건 Supervisor 모드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | /* 프로그램 시작 */ .text /* 프로그램 정의 */ .arm /* ARM 프로세서 */ RESET: B MAIN /* MAIN으로 점프 */ B Undefined_Instruction B Software_Interrupt B Prefetch_Abort B Data_Abort B Reserved B IRQ B FIQ /* 메인 프로그램 */ .org 0x100 MAIN: MOV R0,#2 /* R0 <- 2 */ MOV R1,R0 /* R1 <- R0 */ mov r0, #3 /* fiq */ swi 0x08 /*cpsr_c = r0*/ Software_Interrupt : mov r0, #0x00000013 msr cpsr_c, r0 Undefined_Instruction : mov r0, #0x0000001b msr cpsr_c, r0 Prefetch_Abort : mov r0, #0x00000017 msr cpsr_c, r0 Data_Abort : mov r0, #0x00000017 msr cpsr_c, r0 Reserved : IRQ : mov r0, #0x00000012 msr cpsr_c, r0 FIQ : mov r0, #0x00000011 msr cpsr_c, r0 .end | cs |
#test#
swi 명령어를 통해서 디버깅을 하도록 코드를 만들었습니다.
각각의 mode bits를 PSR의 control bits에 넣었을 때 mode가 변경되는 것을 확인할 수 있습니다.
'ARM Processor' 카테고리의 다른 글
[ARM 프로세서_Day5]ROR Immediate 상수 (0) | 2018.11.17 |
---|---|
[ARM 프로세서_Day5]Memcpy_Single,Multiple (0) | 2018.11.17 |
[ARM 프로세서_Day4]Mini_project-두더지 게임 (0) | 2018.11.06 |
[ARM 프로세서_Day3]Linux+ARM(환경설정) (0) | 2018.11.06 |
[ARM 프로세서_Day1,2]ARM 예제 (0) | 2018.11.06 |