Self-Improvement

(*) ARM char, pointer 종합? (LDMIA, STMIA) 본문

ARM

(*) ARM char, pointer 종합? (LDMIA, STMIA)

JoGeun 2021. 1. 14. 15:30

a.idb
0.14MB

#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를 통해 할당이 이루어진다.