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

20151128 엄민웅 - arm 임베디드레시피 이론 수업 (교제 127~161)

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

구조체 대입 어셈블리 코드 확인 해보기.


예제)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<stdio.h>
 
typedef struct _person
{
  char name[20];
  char phoneNum[20];
  int age;
}person;
 
int main()
{
  person arr= {"ZZYYXX""1234567890"111};
  person tamp;
  person tamp2;
 
// sol 1.
  tamp = arr; 
 
// sol 2.
  strcpy(tamp2.name, arr.name);
  strcpy(tamp2.phoneNum, arr.phoneNum);
  tamp2.age = arr.age;
 
  return 0;
}

cs


; Line 17

  mov  ecx, 11          ; 0000000bH

  lea  esi, DWORD PTR _arr$[ebp]

  lea  edi, DWORD PTR _tamp$[ebp]

  rep movsd


; Line 20

  lea  eax, DWORD PTR _arr$[ebp]

  push  eax

  lea  ecx, DWORD PTR _tamp2$[ebp]

  push  ecx

  call  _strcpy

  add  esp, 8

; Line 21

  lea  edx, DWORD PTR _arr$[ebp+20]

  push  edx

  lea  eax, DWORD PTR _tamp2$[ebp+20]

  push  eax

  call  _strcpy

  add  esp, 8

; Line 22

  mov  ecx, DWORD PTR _arr$[ebp+40]

  mov  DWORD PTR _tamp2$[ebp+40], ecx



(으흠 간만에 어셈블리 보니 해석하기 힘드네요 ㅠ )


로 보면 된다고 하심.



Arm칩에선 인자 4개, 내부변수 7개

까지는 레지스터 사용. 그 이상은 스택을 사용하기 때문에 느려짐. 이런 프로토콜 규약을 알고 있으면 

효율적으로 프로그램 짤수 있음.


p142.

PLL주파수 처리기. 크리스탈 주파수 낼 수 있는게 한계가 있으니까 회로에 넣음. 

여기서 IP 인터넷프로토콜 아닌 SoC내부의 블럭(레고 같이)



MSB, LSB (K.J.H. 형님이 찾아 주신 그림ㅋㅋ)


어셈블리는 칩마다 운영체제마다 문법이나 규약이 다 다름. 자기가 짠곳과 다른 환경에서 짤리면 다시공부해서 싹다 그 규약에 맞게 수정해야 한다함 흑흑

그래서 나온게 C언어 ㅋ C언어는 어딜가든 다 공통이니깐.  


728x90