도와주세요!!
글 수 15,339
2007.10.05 14:41:24 (*.233.135.85)
6591
안녕하세요.
말씀을 보고 바로 프로그램을 작성해서 확인해 보았습니다.
그러나 PC에서 실행하나, EZ-X5에서 실행하나, 정상적으로
똑 같은 형태로 출력되었습니다.
프로그램 소스를 올려 주시면 저도 확인해 보겠습니다.
참고로 제가 확인한 프로그램입니다.
#include <stdio.h>
#include <string.h>
int main()
{
char array[20];
int ndx;
memset( array, 0, 20);
array[0] = 0x01;
*( (short *)&array[1]) = 0x1234;
for ( ndx = 0; ndx < 20; ndx++)
{
printf( "array[%d] = %xn", ndx, array[ndx]);
}
}
PC에서 실행하든 EZ-X5에서 실행하든 똑 같이 아래와 같이 출력되었습니다.
[root@ez-x5 test_fun]$ ./a.out
array[0] = 1
array[1] = 34
array[2] = 12
array[3] = 0
array[4] = 0
array[5] = 0
array[6] = 0
array[7] = 0
array[8] = 0
array[9] = 0
array[10] = 0
array[11] = 0
array[12] = 0
array[13] = 0
array[14] = 0
array[15] = 0
array[16] = 0
array[17] = 0
array[18] = 0
array[19] = 0
참고로 테스트할 때 사용한 162를 대입하면 아래와 같습니다.
#include <stdio.h>
#include <string.h>
int main()
{
char array[20];
int ndx;
memset( array, 0, 20);
array[0] = 0x01;
*( (short *)&array[1]) = 162;
for ( ndx = 0; ndx < 20; ndx++)
{
printf( "array[%d] = %2xn", ndx, (unsigned char)array[ndx]);
}
}
--------------------------------
]$ ./a.out
array[0] = 1
array[1] = a2
array[2] = 0
array[3] = 0
array[4] = 0
array[5] = 0
array[6] = 0
array[7] = 0
array[8] = 0
array[9] = 0
array[10] = 0
array[11] = 0
array[12] = 0
array[13] = 0
array[14] = 0
array[15] = 0
array[16] = 0
array[17] = 0
array[18] = 0
array[19] = 0
제가 올린 소스로 컴파일해서 확인해 보시면 빠르실 것입니다. ^^
>안녕하십니까.
>
>EZ-X5 보드를 사용하고 있습니다.
>
>배열을 선언 했습니다.
>char array[20];
>
>메모리 초기화 후에
>memset( array, 0x00, 20 );
>
>array[0] = 0x01;
>을 할당하고
>
>*((short*)&array[1]) = 162;
>를 할당 했습니다.
>
>보통 리눅스의 핵사 값을 찍어보면
>
>[01] [a2] [00] [00] [00] [00] [00] .........
>이렇게 할당이 됩니다.
>
>보드에서 실행을 시켜 보면
>
>[00] [a2] [00] [00] [00] [00] [00] .........
>첫번째 메모리 까지 침범 합니다.
>
>그래서 [a2]가 이진수로 10100010 이니
>혹시 맨앞 비트에 문제가 있는거 아닌가 싶어서
>
>
>array[0] = 0x01;
>*((short*)&array[1]) = 0x02;
>를 할당했는데 결과는 마찬가지 입니다.
>
>왜 앞의 메모리 까지 침범하는지.. 답변 부탁드립니다.^^
>
>
>
>
>
말씀을 보고 바로 프로그램을 작성해서 확인해 보았습니다.
그러나 PC에서 실행하나, EZ-X5에서 실행하나, 정상적으로
똑 같은 형태로 출력되었습니다.
프로그램 소스를 올려 주시면 저도 확인해 보겠습니다.
참고로 제가 확인한 프로그램입니다.
#include <stdio.h>
#include <string.h>
int main()
{
char array[20];
int ndx;
memset( array, 0, 20);
array[0] = 0x01;
*( (short *)&array[1]) = 0x1234;
for ( ndx = 0; ndx < 20; ndx++)
{
printf( "array[%d] = %xn", ndx, array[ndx]);
}
}
PC에서 실행하든 EZ-X5에서 실행하든 똑 같이 아래와 같이 출력되었습니다.
[root@ez-x5 test_fun]$ ./a.out
array[0] = 1
array[1] = 34
array[2] = 12
array[3] = 0
array[4] = 0
array[5] = 0
array[6] = 0
array[7] = 0
array[8] = 0
array[9] = 0
array[10] = 0
array[11] = 0
array[12] = 0
array[13] = 0
array[14] = 0
array[15] = 0
array[16] = 0
array[17] = 0
array[18] = 0
array[19] = 0
참고로 테스트할 때 사용한 162를 대입하면 아래와 같습니다.
#include <stdio.h>
#include <string.h>
int main()
{
char array[20];
int ndx;
memset( array, 0, 20);
array[0] = 0x01;
*( (short *)&array[1]) = 162;
for ( ndx = 0; ndx < 20; ndx++)
{
printf( "array[%d] = %2xn", ndx, (unsigned char)array[ndx]);
}
}
--------------------------------
]$ ./a.out
array[0] = 1
array[1] = a2
array[2] = 0
array[3] = 0
array[4] = 0
array[5] = 0
array[6] = 0
array[7] = 0
array[8] = 0
array[9] = 0
array[10] = 0
array[11] = 0
array[12] = 0
array[13] = 0
array[14] = 0
array[15] = 0
array[16] = 0
array[17] = 0
array[18] = 0
array[19] = 0
제가 올린 소스로 컴파일해서 확인해 보시면 빠르실 것입니다. ^^
>안녕하십니까.
>
>EZ-X5 보드를 사용하고 있습니다.
>
>배열을 선언 했습니다.
>char array[20];
>
>메모리 초기화 후에
>memset( array, 0x00, 20 );
>
>array[0] = 0x01;
>을 할당하고
>
>*((short*)&array[1]) = 162;
>를 할당 했습니다.
>
>보통 리눅스의 핵사 값을 찍어보면
>
>[01] [a2] [00] [00] [00] [00] [00] .........
>이렇게 할당이 됩니다.
>
>보드에서 실행을 시켜 보면
>
>[00] [a2] [00] [00] [00] [00] [00] .........
>첫번째 메모리 까지 침범 합니다.
>
>그래서 [a2]가 이진수로 10100010 이니
>혹시 맨앞 비트에 문제가 있는거 아닌가 싶어서
>
>
>array[0] = 0x01;
>*((short*)&array[1]) = 0x02;
>를 할당했는데 결과는 마찬가지 입니다.
>
>왜 앞의 메모리 까지 침범하는지.. 답변 부탁드립니다.^^
>
>
>
>
>