ARM
(*) ARM char, pointer 종합? (LDMIA, STMIA)
JoGeun
2021. 1. 14. 15:30
#include <stdio.h>
#include <string.h>
struct score
{
int kor;
int eng;
int mat;
};
int main(void)
{
char aaa[50];
char abc[10];
char abb[10];
char aa='a';
unsigned int a[10]={1,2,3,4,5};
char b[10]="abcdefg";
scanf("%s",&abc);
strcpy(abb,abc);
printf("abb : %s\n", abb);
printf("%c\n", aa);
printf("%d %d %d\n",a, a[0], a[4]);
printf("%s %c %c\n",b, b[0], b[4]);
}
소스코드에 없는 memset을 한거보니 unsingned int a[10]을 의미하는 것으로 보인다.
int는 4byte로 10개의 배열을 생성했으니 0x28(40)의 크기를 가지고 있음으로 동일하다.
그리고 각 변수에 값을 넣어주고 있다.
scanf 함수를 할때 src 주소를 인자로 받고 있다.
scanf로 받은 데이터를 strcpy를 통해 &dest에 복사하여 printf로 출력하고 있다.
2번의 printf를 수행하며 var_5는 프롤로그쪽에서 값이 형성이 되었다.
마지막에 있는 printf도 별 어려운건 없다.
LDRB로 var_84, var_80에서 1바이트씩 가지고 와서 인자로 사용한다.
var_84, var_80 주소에 있는 값은 맨 처음에 있는 LDMIA, STMIA를 통해 할당이 이루어진다.