ARM Development Suite v1.2

Slides:



Advertisements
Similar presentations
L o g o TVM ver. Beta 설계 제안서 L o g o Contents 프로젝트 개요 1 프로젝트 진행일정 2 프로젝트 목표 3 프로젝트 구성 4.
Advertisements

컴퓨터와 인터넷.
안드로이드 악성코드 분석론 및 리버싱 27th OCTOBER 2013.
3. 명령어 집합 구조 순천향대학교 정보기술공학부 이상정.
ISA 심화 및 start.S code 분석 SIOR 15th 최재훈.
Lecture #2 제2장 CPU의 구조와 기능(1).
2.1 CPU의 기본 구조 2.2 명령어 실행 2.3 명령어 파이프라이닝 2.4 명령어 세트
Lecture #5 어셈블리어 (2) 매크로 어셈블리어 시스템프로그래밍.
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
08. 디바이스 드라이버의 읽기와 쓰기 김진홍
12장. 제어 장치 다루는 내용 CPU속의 제어장치 마이크로 연산 제어장치의 동작.
어셈블리 문법 보강 4월 10일.
제 3장 컴퓨터 시스템의 구조.
System Programming 제1장 배경지식 시스템 프로그래밍.
Code Worrior SYSDEC .
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
9장. 제어장치 Lecture #9.
07. 디바이스 드라이버의 초기화와 종료 김진홍
제10강 중앙처리장치 1.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
제2장 CPU의 구조와 기능. 제2장 CPU의 구조와 기능 CPU의 기능 명령어 인출(Instruction Fetch): 기억장치로부터 명령어를 읽어온다. 명령어 해독(Instruction Decode): 수행해야 할 동작을 결정하기 위하여 인출된 명령어를 해독한다.
ARM 명령어 집합 Lecture #7.
Error Detection and Correction
컴퓨터정보공학부 서버 안내 [ IBM x3500 ] it.sangji.ac.kr ict.sangji.ac.kr 혹은
DK-128 ADC 실습 아이티즌 기술연구소
부트로더와 Self Programming
ARM Development Suite v1.2
Homework #5 (1/3) 다음을 수행한 후, 결과 파일들을 출력하여 제출한다.
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
타이머카운터 사용법 휴먼네트웍스 기술연구소
PSW : PROGRAM STATUS WORD
ATmega128 FND 실습 휴먼네트웍스 기술연구소
DK-128 FND 실습 아이티즌 기술연구소 김태성 연구원
Chap 6.Assembler 유건우.
어셈블리어 (2) 매크로 어셈블리어 시스템 프로그래밍 - Lecture #4
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
멀티미디어시스템 제 6 장. 운영체제 IT응용시스템공학과 김 형 진 교수.
ARM Development Suite v1.2
컴퓨터시스템 구조 Computer System Architecture.
DK-128 FND 실습 아이티즌 기술연구소
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2. 컴퓨터 시스템의 동작 명령어 구성 연산 종류와 기능에 따라 오퍼랜드 부분을 다양하게 활용 가능.
■ 화성공장 산학인턴 버스 노선 확인 안내 문의 전화 : 안내페이지 접속 1
컴퓨터 시스템 하드웨어 컴퓨터 시스템 소프트웨어 C P U Control Unit 입 력 장 치 출 력 장 치 ALU
제4강 처리장치 1.
암 걸리는 arm리버싱 이태양 제 13회 해킹캠프 첫 인사 자기소개 0.5분 Arm 소개 5분 레지스터 및 명령어 25분
ARM Development Suite v1.2
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
DK-128 개발환경 설정 아이티즌 기술연구소
Lecture #3 제2장 CPU의 구조와 기능(2).
시스템 인터페이스 Lab#5 쉡 실습.
DK-128 직렬통신 실습 아이티즌 기술연구소
AT MEGA 128 기초와 응용 I 기본적인 구조.
ARM Development Suite v1.2
논리회로 설계 및 실험 4주차.
TVM ver 최종보고서
발표자 : 이지연 Programming Systems Lab.
2장. 솔라리스10 설치. 2장. 솔라리스10 설치 Solaris 1. 솔라리스10 설치 전 시스템 정보 확인 하드웨어 / 소프트웨어 준비 사항 설치 과정 이해 웹사이트 활용 VMware 다운로드 Solaris10 SPARC.
3.2 분기 명령어.
AdcRead API 함수 분석 마이크로프로세서.
ARM Development Suite v1.2
채팅 및 파일전송 프로그램 권 경 곤 김 창 년.
Assembly 05 방호남 07 반지훈 09 박상욱.
ARM Development Suite v1.2
2. 프로세스 B 안우진 - 운영체제 -.
LEON3 DBT 엔진을 이용한 ERC32 기반의 하이퍼바이저 프로토 타입 개발
Presentation transcript:

ARM Development Suite v1.2

ARM 명령어 복습 복습 ADR R0, table1 ;R0 = 0x8030 MOV R11, #4 MOV R12, #1 LDR R1, [R0, R11]! LDRB R2, [R0, R12, LSL #2] LDRSB R3, [R0], R11 LDRH R4, [R0], #-2 LDRSH R5, [R0] LDR R13, =freespace ;R13 = 0x8040 STMFD R13!, {R1, R2, R3, R4, R5} LDMFD R13!, {R6, R7, R8, R9, R10} ADD R7, R7, #0 table1 DCD 0x13579ACE, 0x87654321, 0x12345678, 0x0 tstack SPACE 20 freespace

Branch Instructions 상대 분기 절대 분기 하드웨어 분기 현재 PC 값을 기준으로 +/- 하여 분기 B/BL BX 하드웨어 분기 예외 발생시 하드웨어적으로 특정 번지로 절대 분기

ARM 명령어 실습 CodeWarrior 에서 ’06’ New Project 생성 새로운 파일 생성 파일이름.s AREA ARMex, CODE, READONLY ENTRY start … stop B . END

ARM 명령어 실습 start ; 작성할 부분 ; R0는 첫 번째 스트링의 시작 주소를 갖는다. ; R1은 두 번째 스트링의 ; BL을 사용하여 호출한다. ; 결과 확인 ; 첫 번째 스트링이 작으면 R0 < 0 ; 두 번째 스트링이 작으면 R0 > 0 ; 같으면 R0 = 0 stop B . strcmp LDRB R2, [R0], #1 LDRB R3, [R1], #1 ; 수정필요 CMP R2, #1 CMPCS R2, R3 BEQ strcmp ;여기까지 SUB R0, R2, R3 MOV PC, LR str1 DCB "skskskskskks", 0 str2 DCB "eieieieiieieiei", 0 END

PSR (Program Status Register)

PSR Transfer Instructions MRS, MSR PSR에 값을 써넣거나 PSR에 있는 값을 레지스터에 저장하기 위해서는 MOV나 LDR 등의 명령을 쓰지 않고 위의 명령어 사용 MRS : PSR 값을 레지스터에 저장 MRS{<cond>} Rd, <psr> MSR : 레지스터의 값을 PSR에 저장 MSR{<cond>} <psr>_<fields>, Rm

PSR Transfer Instructions usr/sys 모드에서는 spsr을 접근할 수 없으며 cpsr의 제어필드는 usr모드에서 바꿀 수 없다. 특권모드에서는 cpsr의 제어필드를 바꾸어 인터럽트 마스크 설정 및 모드를 바꿀 수 있다. 그러나 T플래그를 변화시키는 것은 금지되어 있다. Ex) 특권 모드에서 SVC 모드로 바꾸기 위한 프로그램 MRS R0, CPSR ; CPSR를 읽어 R0에 적재한다. BIC R0, R0, #0x1F ; 읽어 온 데이터에 대하여 모드 비트를 0으로 설정한다. ORR R0, R0, #0x13 ; 모드 비트의 내용을 SVC 모드 값으로 바꾼다. MSR CPSR_c, R0 ; 바꾼 값을 다시 CPSR의 제어(control) 필드에 넣는다.

SWI (Software Interrupt) 소프트웨어적으로 예외를 발생시켜 USR모드에서 특권모드인 SVC 모드로 진입하기 위하여 사용 SWI{<cond>} <Immde_24> SWI 예외 발생시 R14_svc에 SWI 명령어의 다음 주소 값이 기록 R14_svc 값을 읽어 -4 한 값이 SWI 명령어의 주소 SWI 명령어를 읽어 LSB 24-bit 추출하여 SWI 번호 획득 SWI 번호에 따라 세부 핸들러 호출 SWI를 통한 세미호스팅(Semi-hosting) 기능 구현

SWP SWP 일종의 메모리 교환 명령어 LDR/STR를 한번에 처리 SWP{<cond>}{B} <Rd>, <Rm>, [<Rn>] 운영체제에서 제공하는 semaphore를 만들기 위하여 사용되는 이유로 semaphore 명령어라고도 불림

SWP SWP SWP{<cond>}{B} <Rd>, <Rm>, [<Rn>]

ARM 명령어 실습 CodeWarrior 에서 ’06_1’ New Project 생성 새로운 파일 생성 파일이름.s AREA ARMex, CODE, READONLY ENTRY start … stop B . END

ARM 명령어 실습 USERMODE EQU 0x10 initstack FIQMODE EQU 0x11 mrs r0, cpsr IRQMODE EQU 0x12 SVCMODE EQU 0x13 ABTMODE EQU 0x17 UNDMODE EQU 0x1b MODEMASK EQU 0x1f UndefStack EQU (0x10000 + 0x400) AbortStack EQU (UndefStack + 0x400) IRQStack EQU (AbortStack + 0x400) FIQStack EQU (IRQStack + 0x400) SVCStack EQU (FIQStack + 0x400) AREA ARMex, CODE, READONLY ENTRY start BL initstack stop B . initstack mrs r0, cpsr bic r0, r0, #MODEMASK orr r1, r0, #ABTMODE msr cpsr_f, r1 ldr sp, =AbortStack orr r1, r0, #IRQMODE ldr sp, =IRQStack orr r1, r0, #FIQMODE ldr sp, =FIQStack orr r1, r0, #SVCMODE ldr sp, =SVCStack END

ARM 명령어 실습