작성
·
421
0
주소값이라는 개념은 이해가 됬는데요
강의 변수와 레지스터 15분쯤 보면
1바이트를 더했는데 왜
0x403010에서 0x403011로 된건지 잘모르겠네요..
저기 뒤에 숫자 1은 바이트가 아니라 1을 더한거아닌가요?
답변 2
2
0
옛날에 학부 때 그 부분이 저도 좀 헷갈렸는데요
요약하자면 논리적인 주소의 값은 1증가 한 게 맞으나 실제 물리적인 메모리의 공간은 1바이트가 증가한 거여서 1바이트를 더했다고 표현하는 겁니다
좀 더 구체적으로는
일단 대부분의 컴퓨터 시스템이
"바이트 주소 지정" 방식을 사용합니다
쉽게 말해서 컴퓨터 메모리에 있는 모든 1바이트 공간마다 고유한 주소 번호를 하나씩 붙여 놓는 건데요
메모리를 아주 긴 아파트 복도라고 상상했을 때
각각의 방(메모리 공간)은 1바이트 크기를 가집니당
그리고 각 방마다 0x01, 0x02, 0x03...
같은 식으로 주소 번호가 붙어 있고요
따라서 주소 값이 1증가 했다는 것은
바로 옆방으로 한 칸 이동했다는 뜻이고,
이는 메모리 상에서 물리적인 공간을 1바이트 만큼 이동했다는 뜻 입니다
+
본 주제와는 무관하지만 같이 알아두면 좋은 개념이어서 추가로 적자면
논리적인 메모리 주소를 담는 공간은
64비트 시스템 기준에서는 8바이트 입니다
이것은 나중에 "포인터의 크기" 개념에서 다루는 내용입니다