Microsoft PowerPoint - 05-ARM-Instruction-Set.ppt

Similar documents
Microsoft Word - 1. ARM Assembly 실습_xp2.doc

ARM Reverse Engineering

Microsoft PowerPoint - LN_1_ARM_CPU_0.ppt [호환 모드]

q ARM (Advanced RISC Machines) v 1990년설립 v UK-based joint venture Ø Apple Computer, Acorn Computer Group, and VLSI Technology q 32-bit RISC Intellectu

Embedded System

Here is a "PLDWorld.com"... // EXCALIBUR... // Additional Resources // µc/os-ii... Page 1 of 23 Additional Resources: µc/os-ii Author: Source: HiTEL D

ARM 아키텍쳐 - ARM 아키텍쳐 - Programming 모델 - ARM 프로세서명령어 - 예외처리와시스템리셋 - ARM9TDMI 프로세서 한국기술교육대학교 전기전자통신공학부 장영조 한국기술교육대학교임베디드 SOC 설계및실습

=

임베디드 시스템 구조

INTRO Basic architecture of modern computers Basic and most used assembly instructions on x86 Installing an assembly compiler and RE tools Practice co

온라인 IT 교육최강 ( 강의정보처리필기강사조대호 차시명 [CA-06 강 ] 프로세서와명령어차시 6 차시 학습내용 프로세서와명령어 학습목표 컴퓨터의구조와프로세서에대해이해할수있다 컴퓨터의명령어에대해이해할수있다 학습내용 1. 컴퓨터의구성 - 1

hwp

Microsoft PowerPoint - hy2-12.pptx

(1) 주소지정방식 Address Mode 메모리접근 분기주소 명령어 직접번지 Reg. 지정 Reg. 간접 Base Index 간접 Immediate 상대번지 절대번지 Long 주소 Reg. 간접 Byte Access Bit Access 내부 Data M

ARM 프로세서 입문

Microsoft PowerPoint - ARM System-on-chip architecture_Chap 4_23p.ppt

untitled

Microsoft PowerPoint - hy2-12.pptx

Microsoft PowerPoint - 강의2.ppt

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능

9

Microsoft PowerPoint - hw8.ppt [호환 모드]

Computer Architecture

Chapter ...

라는 점이다. ARM7TDMI 같은 ARM7에서는 페치(fetch), 디코드 (decode) 그리고 실행(execute)의 3단계로 구성된 파이프라인을 적 V4 PF1 ARMv I-캐시 액세 + 다이내믹

. 고성능마이크로프로세서 LU 와레지스터 파일의구조 (2.). 직접디지털주파수합성기 (FS) 의구조 3. 고성능마이크로프로세서부동소수점연산기 (Floating-Point Unit) 구조 (2) (2.) (2.) 2. 암호화를위한 VLSI 구조와설계의개요 (2.) 다음참

Microsoft PowerPoint - a6.ppt [호환 모드]

프로그램카운터 (Program Counter) 명령레지스터 (Instruction Register) 누산기 (AC: Accumulator) 상태레지스터 (Status Register) PSWR(Program Status Word Register) 메모리주소레지스터 (M

<C1A4BAB8C3B3B8AE5FB1E2BBE75FC7CAB1E25F E687770>

Microsoft PowerPoint - DSD06c_ISA.pptx

T100MD+

hlogin2

학습목표 2/33 마이크로프로세서와마이크로컨트롤러의차이를알수있다. 마이크로프로세서에서프로그램이수행되기위한명령어형식과명령어실행절차를알수있다. 프로그램을수행하려면어떤종류의명령어가필요한지알수있다. 현대컴퓨터의기본모델인저장형프로그램컴퓨터의한계점과그한계를완화하려는방법을알수있다.

Computer Architecture

Microsoft PowerPoint - 15-SMT_cho.ppt

4. 다음주소지정방식중속도가가장빠른주소방식은? 가. immediate addressing mode 나. direct addressing mode 다. indirect addressing mode 라. index register. 5. 간접주소 (indirect addr

Lectures for 2nd Edition

PowerPoint 프레젠테이션

슬라이드 1

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

ARM01

FARA PLC N70plus 시스템 사용자 메뉴얼

PowerPoint 프레젠테이션

chap x: G입력

Microsoft Word - FunctionCall

정보보안 개론과 실습:네트워크

Microsoft PowerPoint - M09_CPUarchi.ppt [호환 모드]

Introduction to LMC

핸디로더(PGM-500) 사용자 메뉴얼

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

SRC PLUS 제어기 MANUAL

No Slide Title

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

한국기술교육대학교장영조 한국기술교육대학교전기전자통신공학부 1

Microsoft PowerPoint - a8a.ppt [호환 모드]

구문 분석

Microsoft Word - ExecutionStack

Microsoft PowerPoint - M07_RTL.ppt [호환 모드]

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

Computer Architecture

Microsoft PowerPoint - CHAP-03 [호환 모드]

Microsoft PowerPoint - 사본 - OAS04-사무자동화 기술(HW-CPU).ppt

마이크로프로세서 개요

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 30.ppt [호환 모드]

Microsoft PowerPoint - 09-컴구조-5-프로세서

< B5BFBEC6BDC3BEC6BBE E687770>

학습목차 r 개념으로살펴보는 CPU 속의제어장치 r 마이크로연산 r 제어장치의동작 r 마이크로프로그램을이용한제어 컴퓨터구조 제어장치

PowerPoint 프레젠테이션

Microsoft PowerPoint - o8.pptx

PowerPoint 프레젠테이션

IDA 5.x Manual hwp

PART II 커널의시작 start_kernel 은어떻게호출될까? 커널의실제시작함수는 start_kernel() 함수다. 이함수는다시 100여개의함수들을호출하면서부팅을진행한다. 하지만 startk_kernel() 함수가호출되기전에커널컴파일을통해얻어진 zimage의압축해

슬라이드 1

chap x: G입력

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - a2.ppt [호환 모드]

OCW_C언어 기초

MicrocontrollerAcademy_Lab_ST_040709

歯설명서_020925_.PDF

임베디드시스템설계강의자료 6 system call 1/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

<C1A4BAB8C3B3B8AE5FB1E2BBE75FC7CAB1E25F FB1E2BBE7C6D0BDBABFEB2E687770>

Microsoft PowerPoint os2.ppt [호환 모드]

PowerPoint Presentation

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

KEY 디바이스 드라이버

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Deok9_Exploit Technique

마프

JVM 메모리구조

Microsoft PowerPoint - a10.ppt [호환 모드]

RealView Compilation Tools Assembler Guide

ºÎ·ÏB

PowerPoint 프레젠테이션

Microsoft Word ARM_ver2_0a.docx

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

Transcription:

ARM 명령어집합 임베디드시스템소프트웨어 I

내용 ARM 구조 프로세서수행모드 레지스터구조 예외처리과정 ARM 명령어형식 조건수행접미사 데이터처리명령어 곱셈명령어 Load/Store 명령어 다중레지스터 Load/Store 스택명령어 SWI 명령어 Branch 명령어 상태레지스터접근명령어 명령어요약 ARM 명령어집합 2

ARM 구조특징 모든명령어가 32bit 크기를가짐 대부분의명령어가 1cycle에수행됨 32bit 크기의많은레지스터 load/store architecture 모든명령어에서조건수행기능있음 간단한어드레싱모드 같은규격의간단한명령어 한명령어에서 ALU와 shifter 동시사용가능 loop을위한자동증가 / 감소어드레싱모드 많은데이터처리를위한 multiple load/store 명령어 ARM 명령어집합 3

ARM 구조버전 ARM 명령어집합 4

프로세서수행모드 사용자모드특권모드특권모드, 예외모드특권모드, 예외모드특권모드, 예외모드특권모드, 예외모드특권모드, 예외모드 usr sys svc abt und irq fiq 사용자프로그램수행할때 (User) Kernel 프로그램수행할때 (System) 전원 reset 발생시혹은소프트웨어인터럽트발생시 (Supervisor) 메모리보호공간혹은없는메모리공간액세스시 (Abort) 잘못된명령어를사용할때 (Undefined) 일반인터럽트발생시 (Interrupt) 우선순위인터럽트발생시 (Fast Interrupt) ARM 명령어집합 5

레지스터구조 31개의범용레지스터 (R0 ~ R15) 가프로세서모드에따라선택되어사용됨 특별한의미를가지는범용레지스터 R13 = SP(stack pointer) R14 = LR(link register) R15 = PC(program counter) R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 User/ System Supervisor R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 Abort Undefined R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 Interrupt R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 Fast interrupt R0 R1 R2 R3 R4 R5 R6 R7 R8_FIQ R9 _FIQ 예외가발생되면 R13 및 R14 가예외용 R13 및 R14 로대치됨 R10 R11 R12 R10 R11 R12 R10 R11 R12 R10 R11 R12 R10 R11 R12 R10 _FIQ R11 _FIQ R12 _FIQ fiq 예외는 R8 ~ R14가대치됨 6개의프로그램상태레지스터 (CPSR 1개및 SPSR 5개 ) - 특별한명령어로만접근가능 R13 (SP) R14 (LR) R15 (PC) CPSR R13_SVC R14_SVC R15 (PC) CPSR R13_ABORT R14_ABORT R15 (PC) CPSR R13_UNDEF R14_UNDEF R15 (PC) CPSR R13_IRQ R14_IRQ R15 (PC) CPSR R13 _FIQ R14 _FIQ R15 (PC) CPSR SPSR_SVC SPSR_ABORT SPSR_UNDEF SPSR_IRQ SPSR_FIQ ARM 명령어집합 6

현재프로그램상태레지스터 (CPSR) 31 28 8 4 0 NZCV I F T mode 조건코드비트 N = 계산결과가음수 Z = 계산결과가 '0' C = 계산후 carry 발생 V = 계산후 overflow 발생 인터럽트 disable 비트 I = 1, IRQ 를 disable 함 F = 1, FIQ 를 disable 함 T 비트 : '0' 이면명령어가 ARM 명령어이고 '1' 이면 Thumb 명령어를표시 mode 비트 : 프로세서의 7 개모드중하나를표시 mode usr fiq irq svc abt und sys M[4:0] 10000 10001 10010 10011 10111 11011 11111 ARM 명령어집합 7

프로그램카운터 모든명령어는길이가 32 bit이고메모리에저장될때 word(=4 bytes) align되어야함 R15(=PC) 의값은 bit 2~31에저장되고 bit 0~1은항상 '0' 임 R14(=LR) 는명령어 BL(Branch with Link) 를사용하여 subroutine 호출시 return 주소가자동저장됨 subroutine call할때 BL SUB1 subroutine return할때 MOV R15, R14 ( 혹은 MOV PC, LR) ARM 명령어집합 8

예외 (exception) 처리과정 예외발생시 ( 프로세서가실행 ) SPSR_<mode> 에 CPSR을복사 CPSR의모드 bit 변경 CPSR의 I bit를세트하고 mode가 fiq이면f bit도세트 해당모드의레지스터사용으로변경 LR_<mode> 에 return 주소저장 PC에해당예외 vector 주소를저장 예외복귀시 ( 프로그램에서수행 ) CPSR 에 SPSR_<mode> 를복사 PC 에 LR_<mode> 를복사 예외종류 Reset Undefined instructions Software Interrupt(SWI) Instruction fetch memory abort Data access memory abort IRQ (Interrupt) FIQ (Fast Interrupt) 예외모드 svc und svc abt abt irq fiq 예외 vector 주소 0x00000000 0x00000004 0x00000008 0x0000000c 0x00000010 0x00000018 0x0000001c ARM 명령어집합 9

ARM 파이프라인 ARM은빠른명령어수행을위하여파이프라인을사용 3 stage 파이프라인경우 (1990년 ~1995년 ) fetch - 명령어를메모리에서레지스터로복사 decode - 명령어를디코드 execute - 레지스터의내용을사용하여계산한후레지스터에저장 fetch decode execute PC PC-4 PC-8 ARM 명령어집합 10

ARM 명령어형식 기본형식 ADD Rd, Rn, Op2 ; Rd = Rn + Op2 Rd = destination register Rn = operand 1 ( 항상 register임 ) Op2 = operand 2 (register 혹은 immediate 값 ) ; 다음은 comment ARM 명령어집합 11

조건수행 CPSR 의조건코드비트의값에따라명령어를실행하도록하기위 해서는적절한조건을접미사로붙여주면됨 : ADD r0, r1, r2 ADDEQ r0, r1, r2 ; r0 = r1 + r2 ; If Z is 1 then r0 = r1 + r2 데이터처리명령어들의결과는 CPSR의조건코드비트에영향을미치지못하도록설계되어있음 데이터처리명령어의결과가 CPSR의조건코드비트를변경하기위해서는명령어에접미사로 'S' 를명시하여야함 ADDS r0, r1, r2 ; r0 = r1 + r2 and set condition bits ARM 명령어집합 12

조건수행접미사 Opcode [31:28] Mnemonic extension Interpretation Status flag state for execution 0000 EQ Equal / equals zero Z set 0001 NE Not equal Z clear 0010 CS/HS Carry set / unsigned higher C set or same 0011 CC/LO Carry clear / unsigned lower C clear 0100 MI Minus / negative N set 0101 PL Plus / positive or zero N clear 0110 VS Overflow V set 0111 VC No overflow V clear 1000 HI Unsigned higher C set and Z clear 1001 LS Unsigned lower or same C clear or Z set 1010 GE Signed greater than or equal N equals V 1011 LT Signed less than N is not equal to V 1100 GT Signed greater than Z clear and N equals V 1101 LE Signed less than or equal Z set or N is not equal to V 1110 AL Always any 1111 NV Never (do not use!) none ARM 명령어집합 13

데이터처리명령어 관련명령어종류 산술연산 비교연산 논리연산 데이터이동연산 ARM 은 load/store architecture 데이터처리명령어는메모리에직접적용이불가능하고레지스터에만적용됨. 하나혹은두개의 operand 에대하여계산처리 첫째 operand는항상레지스터 (Rn) 둘째 operand는레지스터혹은 immediate 값으로 barrel shifter 를통하여 ALU로보내짐 ARM 명령어집합 14

산술연산 산술연산명령어및동작 : ADD: operand1 + operand2 ADC: operand1 + operand2 + carry SUB: operand1 - operand2 SBC: operand1 - operand2 + carry -1 RSB: operand2 - operand1 RSC: operand2 - operand1 + carry - 1 문법 : <Operation>{<cond>}{S} Rd, Rn, Operand2 예제 ADD r0, r1, r2 SUBGT r3, r3, #1 RSBLES r4, r5, #5 ARM 명령어집합 15

비교연산 비교연산의결과는 CPSR의조건코드비트를변경 ('S' 비트를 set 할필요가없음 ) 명령어및동작 : CMP: operand1 - operand2, but result not written CMN: operand1 + operand2, but result not written TST: operand1 AND operand2, but result not written TEQ: operand1 EOR operand2, but result not written 문법 : <Operation>{<cond>} Rn, Operand2 예제 : CMP r0, r1 TSTEQ r2, #5 ARM 명령어집합 16

논리연산 관련명령어 : AND: operand1 AND operand2 EOR: operand1 EOR operand2 ORR: operand1 OR operand2 BIC: operand1 AND NOT operand2 (bit clear) 문법 : <Operation> {<cond>} {S} Rd, Rn, Operand2 예제 : AND r0, r1, r2 BICEQ r2, r3, #7 EORS r1, r3, r0 ARM 명령어집합 17

데이터이동연산 관련명령어 : MOV: operand1 <- operand2 MVN: operand1<- not operand2 문법 : <Operation> {<cond>} {S} Rd, Operand2 예제 : MOV r0, r1 ; r0 <- r1 MOVS r2, #10 ; r2 <- 10 and set 'S' bit MVNEQ r1, #0 ; if zero flag set then r1 <- not 0 ARM 명령어집합 18

Shift ARM 은각명령어의일부로서 shift 연산을제공하는배럴쉬프터 (barrel shifter) 를제공 Operand 1 Operand 2 Barrel Shifter ALU Result ARM 명령어집합 19

논리 / 산술 Shift Logical Shifts Left LSL #5 ; multiply by 32 (LSL = ASL) Logical Shift Right Logical Shift Left C Destination 0 Logical Shift Right 0 Destination C LSR #5 ; divide by 32 Arithmetic Shift Right Arithmetic Shift Right ASR #5 ; divide by 32 (signed) s Destination C sign 비트유지 ARM 명령어집합 20

회전 Shift Rotate Right (ROR) ROR #5 Rotate Right Destination C Rotate Right Extended (RRX) Rotate Right through Carry RRX #5 Destination C ARM 명령어집합 21

Shift Operand 레지스터가 shift 되는양은 2 가지방법으로지정. immediate 5-bit ADD r5, r5, r3 LSL #3 추가 cycle 필요없음 레지스터의 bottom byte 사용 (PC는안됨 ) ADD r5, r5, r3 LSL r2 추가 cycle 필요 Shift 가명시되지않으면 default shift 적용 : LSL #0 ARM 명령어집합 22

곱셈명령어 ARM 은기본적으로 2 개의곱셈명령어제공 Multiply MUL {<cond>} {S} Rd, Rm, Rs ; Rd = Rm * Rs Multiply Accumulate - does addition for free MLA {<cond>} {S} Rd, Rm, Rs, Rn ; Rd = (Rm * Rs) + Rn 사용상의제한 : Rd 과 Rm 는동일한레지스터이어서는안됨 ARM 명령어집합 23

Load/Store 명령어 ARM 은 load/store architecture: memory to memory 데이터처리명령을지원하지않음 따라서일단사용하려는데이터를레지스터로이동해야함 ARM은메인메모리와상호작용하는세종류의명령어집합이있음 1개레지스터 (single register) 데이터이동 (LDR/STR). 다수레지스터 (multiple register) 데이터이동 (LDM/STM). 데이터스웝 (SWP). ARM 명령어집합 24

Load/Store - Single Register 기본적인 load/store 명령어 Word(4 bytes): LDR, STR Halfword(2 bytes): LDRH, STRH Byte(1 byte): LDRB, STRB ARM 명령어집합 25

Load/Store - Base Register 접근될메모리위치는 base 레지스터에유지함 STR r0, [r1] ; r0의내용을 r1이가리키는메모리위치에저장 LDR r2, [r1] ; r1이포인팅하는메모리위치의정보를 r2에저장 Memory STR 의 source 레지스터 r0 0x05 base 레지스터 r1 0x200 0x200 0x05 r2 0x05 LDR 의 destination 레지스터 ARM 명령어집합 26

Load/Store - Offset base 레지스터값으로부터 offset 만큼떨어진위치의정보를접근하는명령어 pre-indexed LDR r0, [r1, #4] ; r0 := mem 32 [r1 + 4] post-indexed LDR r0, [r1], #4 ; r0 := mem 32 [r1], r1 := r1 + 4 auto-indexing LDR r0, [r1, #4]! ; r0 := mem 32 [r1 + 4], r1 := r1 + 4 ARM 명령어집합 27

Pre-indexed LDR r0, [r1, #4] 메모리 0x00000004 + 0x00 0x00 0x3b 0xf8 1 word=4 byte 임 0x00001238 r1 0x00001234 0x00001234 r0 0x00003bf8 0x00000000 ARM 명령어집합 28

Post-indexed LDR r0, [r1], #4 메모리 0x00000004 r1 값변경됨 r1: 0x00001234 + 0x00 0x00 0x3b 0xf8 0x00 0x00 0x51 0x2a 0x00001238 0x00001234 r0 0x0000512a ARM 명령어집합 29

Auto Indexing LDR r0, [r1, #4]! 메모리 r1 값변경됨 0x00000004 + 0x00 0x00 0x3b 0xf8 1 word=4 byte 임 0x00001238 r1 0x00001234 0x00001234 r0 0x00003bf8 0x00000000 ARM 명령어집합 30

다중레지스터 Load/Store 기본명령어 STM/LDM 확장명령어 STMIA/LDMIA: Increment After STMIB/LDMIB: Increment Before STMDA/LDMDA: Decrement After STMDB/LDMDB: Decrement Before ARM 명령어집합 31

블록복사 ; r12 - source 시작주소 high ; r14 - source 끝주소 ; r13 - destination 시작주소 loop LDMIA r12!, {r0-r11} STMIA r13!, {r0-r11} r13 r14 CMP BNE r12, r14 loop r12 low 48 bytes ARM 명령어집합 32

스택 어떤종류의스택을사용하느냐에따라스택명령어의접미사가달라짐 STMFD/LDMFD: Full Descending stack 참고 : ARM 컴파일러가사용하는스택 STMFA/LDMFA: Full Ascending stack. STMED/LDMED: Empty Descending stack STMEA/LDMEA: Empty Ascending stack ARM 명령어집합 33

스택사용보기 Old SP SP high r5 r4 r3 r1 r0 Old SP SP r5 r4 r3 r1 r0 SP Old SP r5 r4 r3 r1 r0 SP Old SP r5 r4 r3 r1 r0 low STMFD sp!, {r0, r1, r3-r5} STMED sp!, {r0, r1, r3-r5} STMFA sp!, {r0, r1, r3-r5} STMEA sp!, {r0, r1, r3-r5} ARM 명령어집합 34

스택과서브루틴 스택의용도중하나는서브루틴내에선언된지역변수에대한일시적인저장소를제공하는것 서브루틴 call 시현재사용하는레지스터를스택에 push 하고, 서브루틴 return 시스택의 pop 을통해원래의레지스터값으로환원시킴 STMFD sp!, {r0-r12, lr}...... LDMFD sp!, {r0-r12, pc} ; push ; pop ARM 명령어집합 35

Swap 명령어 메모리읽기와쓰기를 atomic하게수행하는명령어 SWP {<cond>} {B} Rd, Rm, [Rn] 메모리 Rn 1 temp 2 3 Rm Rd 보통 Rm 과 Rd 을같게하여 Rm 과 mem[rn] 을 swap 함 ARM 명령어집합 36

Software Interrupt (SWI) svc 예외를발생시킴 예외발생시처리하는과정이이루어짐 0x00000008 번지로 jump 하게됨 System call 을할때사용 MOV r0, #'A' ; r0= 'A' SWI SWI_WriteC ARM 명령어집합 37

Branch 명령어 Branch B{<cond>} label Branch with Link BL{<cond>} sub_routine_label ARM 명령어집합 38

상태레지스터접근명령어 CPSR/SPSR 와범용레지스터간의데이터이동가능 MRS : 범용레지스터 <- Status 레지스터 MSR : Status 레지스터 <- 범용레지스터혹은 Immediate 값 명령어종류 MRS {<cond>} Rd,<psr> ; Rd = <psr> MSR {<cond>} <psr>,rm ; <psr> = Rm MSR {<cond>} <psr>, #Immediate ; <psr> = #Immediate ARM 명령어집합 39

명령어요약 - 1/4 Mnemonic ADC ADD AND B BIC BL CDP CMN CMP EOR Instruction Add with carry Add AND Branch Bit Clear Branch with Link Coprocessor Data Processing Compare Negative Compare Exclusive OR Action Rd: = Rn + Op2 + C Rd: = Rn + Op2 Rd: = Rn AND Op2 R15: = address Rd: = Rn AND NOT Op2 R14: = R15, R15: = address (Coprocessor-specific) CPSR flags: = Rn + Op2 CPSR flags: = Rn Op2 Rd: = (Rn AND NOT Op2) OR (op2 AND NOT Rn) ARM 명령어집합 40

명령어요약 - 2/4 Mnemonic LDC LDM LDR MCR MLA MOV MRC MRS Instruction Load coprocessor from memory Load multiple registers Load register from memory Move CPU register to coprocessor register Multiply Accumulate Move register or constant Move from coprocessor register to CPU register Move PSR status/flags to register Action Coprocessor load Stack manipulation (Pop) Rd: = (address) crn: = rrn {<op>crm} Rd: = (Rm * Rs) + Rn Rd: = Op2 Rn: = crn {<op>crm} Rn: = PSR ARM 명령어집합 41

명령어요약 - 3/4 Mnemonic MSR MUL MVN ORR RSB RSC SBC STC STM Instruction Move register to PSR status/flags Multiply Move negative register OR Reverse Subtract Reverse Subtract with Carry Subtract with Carry Store coprocessor register to memory Store Multiple Action PSR: = Rm Rd: = Rm * Rs Rd: = 0xFFFFFFFF EOR Op2 Rd: = Rn OR Op2 Rd: = Op2 Rn Rd: = Op2 Rn 1 + C Rd: = Rn Op2-1 + C address: = CRn Stack manipulation (Push) ARM 명령어집합 42

명령어요약 - 4/4 Mnemonic STR SUB SWI SWP TEQ TST Instruction Store register to memory Subtract Software Interrupt Swap register with Memory Test bitwise equality Test bits Action <address>: = Rd Rd: = Rn Op2 OS call Rd: = [Rn], [Rn] := Rm CPSR flags: = Rn EOR Op2 CPSR flags: = Rn AND Op2 ARM 명령어집합 43

참고문헌 ARM Limited, The ARM Instruction Set, ARM University Program V1.0, 1996. Steve Furber, ARM System-on-Chip Architecture Second Edition, Addison-Wesley, 2000. David Seal, ARM Architecture Reference Manual Second Edition, Addison-Wesley, 2001. 상명대학교임베디드시스템소프트웨어트랙, http://et.smu.ac.kr, 2005. ARM 명령어집합 44