Download presentation
Presentation is loading. Please wait.
1
Windows 환경에서 동작하는 Arm Emulator(Simulator)
발표자: 이원재
2
시스템 흐름도 Emulation Part DLL( by C ) User Interface Part ( by C# ) Fetch
Timer Event Call Decode Execute Display Result Result Return
3
Emulation을 위한 주요변수 1 EZ-S3C2440 메모리 맵 Arm Register
Char SDRAMBuffer[64M] Char NANDBuffer[64M] Char SRAMBuffer[4K] UINT32 R[16] UINT32 CPSR UINT32 SPSR UINT32 Register[136] Arm Register S3C2440 Special Register
4
Emulation을 위한 주요변수 2 F Address D E UINT32 pipeLine[2][3]
Command UINT32 pipeLine[2][3] UINT32 iWhatCommand[2] Command index pipe 컴퓨터 구조에서 Fetch와 Decode, Execute가 순차적으로 일어나지 않습니다. 즉, 동시에 일어나게 됩니다. 즉 새로운 명령어를 Fetch하게 되면 그 명령어가 해석되고, 실행되는 것이 아니라 새로운 명령어를 Fetch하면 그전에 Fetch했던 명령어를 Decode하고
5
Emulation의 주요 함수 - Fetch()
UINT32 pipeLine[2][3] F Command D Command E Command Function Line 3 Char SDRAMBuffer (64M) Decode() Fetch() Execute() F Address D Address E Address 추출 4byte Little-Endian 4byte 2 1 UINT32 pipeLine[2][3] F Command D Command E Command F Address D Address E Address
6
Emulation의 주요 함수 - Decode()
UINT32 pipeLine[2][3] F Command D Command E Command Opcode 분석 루틴 Function Line Fetch() F Address D Address E Address Decode() Little-Endian 4byte 2 3 4 1 UINT32 iWhatCommand[2] D Command index E Execute() UINT32 iWhatCommand[2] D Command index E
7
1 2 3 Emulation의 주요 함수 - Execute() UINT32 iWhatCommand[2] D E
Command index E Function Line Fetch() Execute() Decode() F Address D E Command UINT32 pipeLine[2][3] 1 2 3 SDRAMBuffer, Register, special Register
8
시연
9
주요 함수 코드 C#에서 C로 작성된 DLL 호출-1
선언 호출 참고:
10
주요 함수 코드 C#에서 C로 작성된 DLL 호출-2
● PInvoke( Platform Invocation Service) – 관리코드에서 비관리 코드를 호출하는 것 C# Win32 API Why? 참고:
11
주요 함수 코드 C#에서 C로 작성된 DLL 호출-3
참고:
12
주요 함수 코드 C or C++를 이용한 DLL 작성법
13
주요 이용tools IDA-Pro 소개 참고:
14
주요 이용tools IDA-Pro 1
15
주요 이용tools Source Insight 소개
16
주요 이용tools Source Insight-1
17
주요 이용 Site
18
Q & A
Similar presentations