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

20151127_안향진_ARM어셈블리_2

by 알 수 없는 사용자 2015. 11. 29.
728x90
반응형


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

ARM 어셈블리

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

<ARM 어셈블리>



=Exception 처리





=AAPCS : Process Call Standard for ARM Architecture




*인텔


-구조체 = 구조체 대입시 어떻게 동작하는가?


        stTest1 = stTest2;

004113F9  mov         ecx,7 

004113FE  lea         esi,[stTest2] 

00411401  lea         edi,[stTest1] 

00411404  rep movs    dword ptr es:[edi],dword ptr [esi] 

00411406  movs        word ptr es:[edi],word ptr [esi]  



-구조체 return시 어떻게 동작하는가?

        return stTest2;

004114F9  mov         ecx,7 

004114FE  lea         esi,[stTest2] 

00411501  mov         edi,dword ptr [ebp+8] 

00411504  rep movs    dword ptr es:[edi],dword ptr [esi] 

00411506  movs        word ptr es:[edi],word ptr [esi] 

00411508  mov         eax,dword ptr [ebp+8]

0041150B  push        edx 

0041150C  mov         ecx,ebp 

0041150E  push        eax 

0041150F  lea         edx,ds:[411530h] 

00411515  call        @_RTC_CheckStackVars@8 (041108Ch) 

0041151A  pop         eax 

0041151B  pop         edx 

0041151C  pop         edi 

0041151D  pop         esi 

0041151E  pop         ebx 

0041151F  mov         ecx,dword ptr [ebp-4] 

00411522  xor         ecx,ebp 

00411524  call        @__security_check_cookie@4 (0411023h) 

00411529  mov         esp,ebp 

0041152B  pop         ebp 

0041152C  ret 


=Interrupt

-Nesting : 인터럽트의 중첩

1. Nesting 허용 X

2. 몇 번까지는 허용

...


=SoC (System on Chip)


=SoC내부의 블록들 => IP(Intellectual Property)로 명명 : USB, UART, DMA..


=MCU : Block이 모여 한 개의 MCU 이룸(웬만한 기능은 이 칩안에 모두 가지고 있음

: Serial port, I/O, PLL..)






=AMBA protocol

-AHB

-ASB

-APB


=Arbiter : 버스 시스템을 정리할 신호등



-선 2개



-선 3개
















=MSB : most

=LSB : least

MSB                  LSB

31                      0


=BIG Endian/ LITTLE Endian

.lds

OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")




=컴파일

=Native Code : cpu마다 기계어 코드가 다르므로 호환 x(obj, exe)


어셈블리 -> 어셈블러(컴파일러) -> 기계어


=단점 : CPU가 바뀌면 어셈블리 다시 공부해서 작성해야 함

=> C탄생

C작성 -> C 컴파일러가 해당 CPU에 맞는 어셈블리 만들어줌 -> 어셈블러 -> 기계어


=JRE (자바 가상 머신) = 안드로이드

자바로 컴파일한 컴파일 결과물은 아무 CPU에서도 동작

(윈도우, 리눅스, 자바 가상머신 설치된 어디든..)



728x90