2011년4월15일..포인터복습, 정수와 실수의 바이트 순서(Big/little Endian)
1. 예제5-1
임베디드C p.134의 예제5-1은 변수에는 주소값이 있다.
type | name | address |
int | x | 0x0012FF7C |
VS2010 Debugging에서..
만약 주소가 없다면 중간에 hexa decimal들은 무의미한 쓰레기 값이다.
상수를 변수에 대입 시,
x = 1000;
자료형 자료형 (형동등)
자료형이 같아야 대입할 수 있음.
(변수선언)
…
…
…
x = 1000; // x가 무슨 타입인지 초기에 만든 symbol table을 보고 상수를 대입할 수 있는 자료형인지?
x = 3;
주소 0x0012FF7C = 3; -> 어셈블러로 바꾸면, mov dptr[0012FF7C], 3
어셈블리어가 CPU(기계)와 가장 가까우나 길어지면 이해하기 어렵다.
JAVA |
C |
Assemble |
chip |
★포인터변수의 크기
int *xp;
char *cp; ================> *ucp; //unsigned char pointer
float *fp;
short *sp;
long *lp;
모두 4Bytes의 크기를 갖고 앞에 자료형은 중요하지 않다.
*32bit의 주소를 표현하기 위해 포인터변수의 크기는 자료형의 크기와 관계없이 4Bytes로 고정이다. 또한 주소에는 음수가 없으니 부호가 없다. 포인터의 크기 = 버스의 크기(H/W) 바꿀 수 없다. 완벽한 64bit CPU는 포인터의 크기가 8Bytes가 될 것이다.
2. 예제 5-2
type | name | address |
int | x | 0x0012FF7C |
int * | xp | 0x0012FF78 |
x = 7;
xp = &x;
*xp = 8;
*0x0012FF7C = 8; // 크기는 어떻게 아는가? symbol table에서 xp의 자료형…포인터변수이면서 가리키는 곳의 자료형도 int형이다.
3. 메모리에 저장되는 순서가 어떻게 되나 알아보기 (바이트 순서)
x
0x12 | 0x34 | 0x56 | 0x78 |
이러다 월화수목금금금…이상하게 집에선 집중이 안 됨.
노트 사본…ㅠㅠ
'내장형하드웨어 > 일일보고서' 카테고리의 다른 글
2011년4월15일..마인드스톰 자유과제 발표 (2) | 2011.04.19 |
---|---|
2011년4월18일..포인터복습, 포인터변수의 자료형, 잘못된 자료형을 가리키는 포인터 변수 (0) | 2011.04.19 |
2011년4월14일..다중 제어문, 구구단, 포인터 (0) | 2011.04.15 |
2011년4월13일..for문에서 초기식과 증감식의 변형, gdb(GNU Debugger), 무한반복문, 마인드스톰 자동차 개조 (0) | 2011.04.14 |
2011년4월12일..마인드스톰 소리발생, 자유과제(초음파레이더를 장착한 원격제어감시 지능형 자동차) (0) | 2011.04.13 |