1. 포인터의 연산

 포인터는 덧셈(+, ++, +=)과 뺄셈(-, --, -=) 연산이 가능하다. 이 때 포인터연산에서 증감의 단위는 포인터가 가리키는 형의 크기이다. 그리고 주소에 곱셈(*), 나눗셈(/), 나머지(%) 연산자는 불가능하다. 여기서 주의 할 점은 포인터의 크기는 같다. void*, int*, char* 어차피 모두 주소체계이기 때문에 자신이 쓰는 CPU의 bit수와 같을 것이다. 현재 32bit를 쓰기 때문에 포인터의 크기는 모두 4Byte일 것이다. 하지만 포인터의 크기와 연산은 차이점이 있다. 아래 예를 참조해라.

<포인터연산의 예>

2. BR2, OR2 레지스터

mem_addr32에 0xFF000000주소를 넣어주고 그 주소를 다시 ptr에 넣어줬습니다.
ptr=ptr+68;
unsigned long char형의 크기 * 68  = 4 * 68 = 272 = 0x110 (BR2 Register)
즉 0xFF000110
ptr++;
ptr + unsigned long char형의 크기 = ptr + 4byte  = 276 = 0x114 (OR2 Register)
즉 0xFF000114

위치
이름
크기
IMMR + 0x000
SIUMCR
32bits
...
...
...
IMMR + 0x110
BR2
32bits
IMMR + 0x114
OR2
32bits
IMMR + 0x118
BR3
32bits
...
...
...
IMMR + 0x3C00 - 0x3FFF
PRAM
1024bytes
<MPC860T에서 BR/OR 레지스터의 위치>
Posted by 용학도리
,