ISA 심화 및 start.S code 분석 SIOR 15th 최재훈.

Slides:



Advertisements
Similar presentations
Embedded System 2009 년 11 월 16 일 Embedded Computer1 ● Hardware 와 Software 가 조합되어 특정한 복적을 수행하는 시스템 ● 특정한 기능을 수행하도록 Micro Processor 와 I/O Device 를 내장하며,
Advertisements

1 Prof. Young Jin Nam, Daegu University 컴퓨터 구조 (Computer Architecture) 명령어 세트 : 특성과 기능 남영진
Family 의 개요 의 외부 Pin 기능과 내부 기능 Memory 구조 Timing 2 장 8051 의 구조.
컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
마이크로 컨트롤러 Microcontroller.
안드로이드 악성코드 분석론 및 리버싱 27th OCTOBER 2013.
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
MicroVision.- STR711F Board MicroVision & ST Seminar ARM7TDMI Processor.
제8장. RISC 및 슈퍼스칼라 프로세서 8.1 RISC의 출현 동기 8.2 RISC의 발전 경위
2장 마이크로프로세서 구성요소 Slide 1 (of 19).
제 2장 컴퓨터 구조.
9장 가로채기(Interrupt) Slide 1 (of 15).
기본 컴퓨터의 구조와 설계 Lecture #5.
기본 컴퓨터 프로그래밍 Lecture #6.
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
2 Part 전자계산기 구조 1. 논리 회로 2. 자료 표현 및 연산 3. 명령어 및 프로세서 4. 명령 수행 및 제어 5.
10장 주변장치 (PIO) Slide 1 (of 28).
컴퓨터구조 – 중간시험 (답안지) 부분점수 (사소한 실수면 -1)
Lecture #7 어셈블리어 (4) 매크로 어셈블리어 시스템프로그래밍.
3장. 컴퓨터의 기억장치 학번 : 이름 : 김현화.
3장 MPU 내부구조 Slide 1 (of 28).
임베디드 하드웨어 Lecture #6.
컴퓨터 구조론 2001년 10월 22일 발표자 황영선.
7장 마이크로프로세서의 명령어수행과 주소지정 방식 Slide 1 (of 29).
출처: IT CookBook, 컴퓨터 구조와 원리 2.0 제 12장
컴퓨터 구조.
1 컴퓨터 시스템 소개.
4장. 컴퓨터 시스템의 구성과 기능 다루는 내용 컴퓨터 분해를 통한 본체 살펴보기 컴퓨터 구성요소 컴퓨터의 기능
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
Chapter 10. Interrupt.
1 마이크로프로세서의 원리 마이크로컨트롤러 AVR ATmega128.
Chapter 7. Pentium Processor
Chapter 08 제어장치와 마이크로 오퍼레이션.
4장 컴퓨터의 중앙 처리 장치 하 효 순.
부트 로더 (blob pre2 중심) Lecture #8.
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
Chapter 06 명령어와 번지지정 방식.
ARM 명령어 집합 Lecture #7.
3주 컴퓨터구조.
8086 프로세서의 구조 및 동작 방식 시스템 프로그래밍 - Lecture #2 신라대학교 컴퓨터공학과 시스템 프로그래밍.
임베디드 소프트웨어 설계.
10장. 중앙처리 장치의 명령어 다루는 내용 어셈블리 프로그램의 이해 인터럽트(interrupt) 명령어 세트 주소 지정 방식.
Computer System Architecture
CHAPTER 03. 컴퓨터 구조 컴퓨터 시스템의 구성과 동작 원리_컴퓨터 시스템에 대한 근본적 이해
Programmable Logic Device
Chapter 4 The Von Neumann Model.
컴퓨터 시스템 개관 시스템 프로그래밍 - Lecture #1 신라대학교 컴퓨터공학과 시스템 프로그래밍.
6장 연산 장치 6.1 개요 6.2 연산장치의 구성요소 6.3 처리기 6.4 기타 연산장치.
Computer System Architecture
ARM Development Suite v1.2
제 3 장 연산자 (Operators).
운영체제 (Operating Systems) (Memory Management Strategies)
1. 컴퓨터 시스템 구성요소 메모리(Memory) 캐시메모리 개념 캐시메모리의 특징 적중률(hit ratio)
Chapter 12 Memory Organization
ARM Development Suite v1.2
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
CHAPTER 04 파일 설계(FiLE Design).
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
DEGITAL LOGIC CIRCUIT Term Project – 4 bit ALU.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
ARM Development Suite v1.2
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
데이터 베이스의 내부 구조.
ARM Development Suite v1.2
ARM Development Suite v1.2
임베디드 하드웨어 Lecture #6.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
ARM Development Suite v1.2
가상 기억장치 (Virtual Memory)
4-1. 명령어 형식.
Presentation transcript:

ISA 심화 및 start.S code 분석 SIOR 15th 최재훈

Index ARM Instruction Set start.S code 분석 ARM Instruction의 특징 Branch 명령 Data Processing PSR Transfer Multiply 명령 Single Data Transfer 명령 Block Data Transfer 명령 SWAP 명령 SWI 명령 start.S code 분석

ARM Instruction Set

ARM Instruction의 특징 32bit 하나의 Word로 처리 상대주소 방식 사용 Condition code를 모든 명령어에 적용가능 high code density – 16bit Thumb mode 지원 예제 a=(b==c) ? d:e; CMPS r2, r3 MOVEQ r1, r4 MOVNE r1, r5

Branch and Branch with Link L - Link bit [ 0 : B , 1 : BL ] Offset 값은 2bit를 PC에서 left shift  32Mb Memory 접근 (원래 24bit offset :16Mb) Brach 형식 : B{L}{cond}<expression> {L} : BL일 때는 Linker인 R14에 PC 값을 넣는다. {cond} : 조건 코드이다. 없을 때는 AL가 된다. <expression> : 목적 주소를 적는다 예제 B start /* ALways condition used as default */ CMP R1, #0 /* compare R1 with zero and branch to fred */ BEQ end /* if R1 was zero otherwise continue to next In next instruction */

Data Processing Instruction

Data Processing Ins (cont…) <cond> [31:28] 4bit <I> [25] 1bit Operand2 의 immediate operand 여부 <OpCode> [24:21] 4bit

Data Processing Ins (cont…) <S> [20] 1bit S bit 1  CPSR 영향 有 S bit 0  CPSR 영향 無 <Rn> [19:16] 첫 번째 Operand Register 로 지정되어야 함 명령에 따라 사용하지 않음  MOV, MVN <Rd> [15:12] 4bit Operation의 결과가 저장될 Register

Data Processing Ins (cont…) Operand2 [11:0] 12bit Register Operand [ shift (11:4) | Rm (3:0) ] shift field [ cont(5) | type(2) | 0(1) ] [ Rs(4) | 0(1) | type(2) | 1(1) ] type 00 : logical left (LSL) 01 : logical right (LSR) 10 : arithmetic right (ASR) 11 : rotate right (ROR) Immediate Operand [ Rotate (11:8) | Imm (7:0) ] 8bit  32bit Rotate 값 * 2

Data Processing Instruction EX [ex1] MOV r0, r1 [ex2] MOV r0, #0 [ex3] MOV r0, #0xfc000003 [ex4] MOV r0, r1, LSL #1 [ex5] MOV r0, r1, LSR r2 [ex6] MOVS r0, r1, LSR #1 MOVCC r0, #10 MOVCS r0, #11

PSR Transfer 명령 MSR{cond} Rd, <psr> : Transfer PSR contents to a register MSR{cond} <psr>, Rm : Transfer register contents to PSR MSR{cond} <psrf>, Rm : Transfer Register contents to PSR flag bits only [ex] MSR CPSR_all, r0  user mode에서 수행되었다면, control bit들은 영향을 받지 않고 flag bit만 영향 받음 모드전환 예제 MRS R0, CPSR_all ; Copy the PSR BIC R0, R0, #&1F ; Clear the mode bits ORR R0, R0, #new_mode ; Set bits for new mode MSR CPSR_all, R0 ; Write PSR back, change mode

Multiply 명령 MUL{cond}{s} Rd, Rm, Rs MLA{cond}{s} Rd, Rm, Rs, Rn MUL R1, R2, R3 ; R1 := R2*R3 MLA{cond}{s} Rd, Rm, Rs, Rn Rd := Rm * Rs + Rn 나눗셈에 대한 명령어는 존재하지 않는다.

Single Data Transfer

Single Data Transfer (cont…) Register와 외부 Memory와의 Data 전송담당 (Register 간 데이터 전송을 담당하는 MOV와 구분) 명령 형식 LDR{cond}{B} Rd, address{!} ; Rd := contents of Address LDR{cond}{B} Rd, =expression ; Rd := expression STR{cond}{b} Rd, address{!} ; contents of address :=Rd Pre-Indexed Addressing Mode Rn 을 Base 주소로 사용 LDR|STR {cond}{B} Rd, [Rn <offset>]{!} {B}는 부호 없는 바이트 전달(unsigned byte transfer) {!} : Write back  auto indexing Post-Indexed Addressing Mode Effective Address는 항상 Rn. 즉 Base address를 나타내는 값 LDR|STR{cond}{B}{T} Rd, [Rn], <offset> {T} : Memory Translation 반드시 시스템 모드에서만 선택가능 Write back Default

Single Data Transfer (cont…) --------------------------------------------------    Mode                 Effective address                Indexing   -------------------------------------------------   [Rn]                Rn                                 none   [Rn,+- expression]    Rn +- expression                 Pre-indexed   [Rn,+- Rm]            Rn +- Rm                       Pre-indexed   [Rn,+- Rm, shift cnt] Rn+-(Rm shifted by cnt)         Pre-indexed   [Rn],+-expression     Rn                               Post-indexed   [Rn],+-Rm             Rn                               Post-indexed   [Rn],+-Rm,shift cnt    Rn                               Post-indexed   -------------------------------------------------- # Rn : base 주소를 가지고 있는 레지스터          Rm : r15를 제외한 레지스터(Offset), 부호 값 사용          expression : -4095 - +4096 범위의 Immediate 값(12Bit)          shift : LSL, LSR, ASR, ROR, RRX          cnt : 1..31 사이의 값.

Block Data Transfer Multiple register transfer Instruction

Block Data Transfer (cont…) LDM, STM LDM : 베이스 레지스터(Rn)로 지정된 번지에서 레지스터 목록으로 지정된 각 레지스터의 내용을 읽어 들이는 명령 STM : LDM과 반대 LDM|STM {cond}<add mode> Rn{!} LDM 명령어는 Mnemonic 상의 16bit 공간 존재  각 bit가 Register 와1:1 Mapping 동작 모드 Post-Increment Addressing Pre-Increment Addressing Post-Decrement Addressing Pre-Decrement Addressing

Block Data Transfer (cont…) ============================================            동작                          Stack            Other     ---------------------------------------         pre  increment load             LDMED          LDMIB         post increment load            LDMFD           LDMIA         pre  decrement load            LDMEA          LDMDB         post decrement load           LDMFA          LDMDA         pre  increment store            STMFA           STMIB         post increment store           STMEA           STMIA         pre  decrement store           STMFD           STMDB         post decrement store          STMED           STMDA     ============================================

SWAP, SWI Single Data SWAP Software Interrupt (SWI) SWP{cond}{B} Rd, Rm, [Rn] ; Rd:=[Rn] , [Rn]:=Rm 두 개의 Register의 값을 바꿔주는 명령어 Atomic Memory 동작 Non-Word Operation :: Byte Operation Software Interrupt (SWI) SWI{cond} <expression> 동작모드 변경 : User  Supervisor 구체적인 동작 현재의 PC를 r14_svc에 저장한다. 현재의 상태 레지스터인 CPSR을 SPSR_svc에 저장한다. Supervisor 모드로 들어가서 IRQ를 Disable 한다. PC를 0x08로 setting하고, 그곳에서 instruction을 수행한다.

start.S code

start.S code의 필요성 스택의 초기화 임베디드 시스템의 기본적인 초기화 작업 메모리, 스택, 전역변수 초기화

Exception On Handler

Memory Initializing No need Address Decoder  Programmable 메모리 시작주소 메모리 크기 메모리의 종류 (ROM, SDRAM, DRAM) Access Time Dram Reflash

Interrupt Processing H/W : FIQ, IRQ S/W : SWI Non-Vector 방식

Stack Initializing 스택 포인터에 베이스주소를 넣어줌 동작 모드 각각의 6개 스택포인터를 모두 초기화 MRS reg, CPSR/SPSR MSR CPSR_CXSF/SPSR, reg/immediate

전역변수 Initializing 지역변수 초기화는 해당 서브루틴에서 수행 전역변수는 “Data” 공간을 사용 전역변수는 C 프로그램이 수행되기 전에 초기화되어야 함 전역변수의 종류 ZI(Zero Init) - 초기화 되지 않은 변수, 배열  0 으로 초기화 RW(Read Write) – 초기화 값이 있는 것  초기화 작업이 필요 RO(Read Only) - 상수  초기화 작업이 필요로 하지 않는다.