본문 바로가기
코스웨어/15년 스마트컨트롤러

2015.11.26_개인업무일지_[ASM #1]_이량경_mode

by 알 수 없는 사용자 2015. 11. 27.
728x90
반응형
<Win32API>✔ 

================================================================



<ARM_ASM>✔ 

================================================================


✔ 모드 
- 모드는 단순하게 헬로월드 찍으려고 만든것이 아니다.이 많은 모드에 대한 개념이 있어야 한다.

- 명령어 번호에 해당되는 외에 만들어지는 번호는 처리 코드가 없어 undefine .
- 언디파인된것은 UND로(흘러간다) 처리 된다.

- 커널이 아닌 모드 : 유저모드

- 모드는 운영체제를 염두해서 만든다.
- 앱이(구구단,등) 유저모드 이다.


인텔일때 유용하다. 
context
unsigned int eax; ....


* 리눅스를 윈도우에서 올리면 인텔/리눅스를 암에서 올리면 암
- 시피유의 특화된 CPU를 다 따로 가지고 있었던 이유다.
- 각각의 시피유를 레지스트를 공부해서 만들어 둔 디렉토리 들이다.
* 리눅스의 강점이다. 

- 인텟은 다양하게 돌아가게 안되어있다. ALU도 인텔구조로만 만들어져 윈도우에서만 돌아간다.

ARM
context

- 넥서스폰 구글칩을기반으로만들어 가장 최적화.

* R8~R12레지스트 를 중점으로 사용


- 전원이 켜지면 : 0번지 65줄



- PC에 오른쪽을 집어 넣어라

- 함수를 수행하는 프로그램 카운터
즉, 전원을 넣으면 리셋핸들러가 제일먼저 실행.
- SVC mode의 실행이다.

fiq_vector:
/*------------------------------------------------------------------------------
 *- Function             : fiq_handler
 *- Treatments           : FIQ Interrupt Handler.
 *- Called Functions     : 
 *------------------------------------------------------------------------------*/
fiq_handler:
b fiq_handler

- 벡터의 끝이자 FIQ코드 처리 시작이다.다른 벡터함수들은 라벨로 점프하게 되어있다.
- fiq 벡터함수는 점프 없이 즉시 실행한다. 그만큼 빨리 수행해야되기 때문에 도착하자 마자 실행할수 있도록 점프 없이 (가장빠르게) 구조자체를 이렇게 해놨다. FIq가 동작하기에 최상의 상태를 벡터로 구성해두었다.

reset_vector:
        ldr          pc, =reset_handler
undef_vector:
        b            undef_vector    /* Undefined Instruction */

4바이트 차이

이 벡터를 점프하게 만드는게 익셉션

SVC모드로 씀.

USER모드 치밀한 설계시 사용.
운영체제를 다루는 회사가 아니면 모드를 사용안한다.






728x90