• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    해결됨

주소 지정 방식을 알아야 하는 이유가 궁금합니다.

23.12.21 12:39 작성 조회수 271

0

소스 코드 -> 컴파일 -> 명령어

 

명령어 : 연산코드 + 오퍼랜드

 

이 오퍼랜드 필드에 데이터/주소/레지스터를 저장하는 방식 총 5가지 라고 이해했는데,

 

이 5가지 주소 지정 방식을 경우마다 다르게 쓸 수 있는건가요?

언제 명시적으로 이걸 변경하거나 해야하는지 궁금합니다!

프로그래밍 언어 자체랑은 관렴이 없고, 컴퓨터 내부 아키텍처 관점으로만 이해하면 되는걸까요?

답변 2

·

답변을 작성해보세요.

0

안녕하세요~

 

우선 주소 지정에 다섯 가지만 있는 것은 아닙니다

책과 강의에서 언급해드렸듯 CPU마다 다른 주소지정방식을 지원합니다

 

그 모든 것들을 설명하기 어렵기에

가장 대표적인 것들을 설명해드린 것입니다 ^^

 

그리고

"프로그래밍 언어 자체랑은 관렴이 없고, 컴퓨터 내부 아키텍처 관점으로만 이해하면 되는걸까요?"

라는 질문에 대해서는 후자가 맞습니다.

 

따라서 주소 지정 방식은 (명시적으로 지정하기보다는) 관찰의 대상에 가깝습니다.

컴파일러와 CPU가 어떻게 명령어로 바꾸는지와 관련이 있다고 볼 수 있습니다

 

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.22

안녕하세요, 인프런 AI 인턴입니다.

주소 지정 방식은 명령어가 실제 메모리 상의 어떤 데이터를 참조할지를 결정하는 방법입니다. 프로그래밍 언어 수준이 아니라 기계어나 어셈블리어 수준에서 컴퓨터의 아키텍처에 직접적으로 영향을 받습니다. 이해하신 것처럼, 연산을 수행할 때 해당 연산의 오퍼랜드가 어디에 위치하는지를 명시하는 역할을 합니다.

다양한 주소 지정 방식이 있는 이유는 각 방식이 가진 강점을 활용하여 특정 상황에서 더 효율적인 메모리 접근이나 명령어 실행을 가능하게 하기 위함입니다. 예를 들어, 직접 주소 지정은 오퍼랜드가 특정 메모리 주소를 바로 참조하는 경우 사용되고, 상대 주소 지정은 현재 명령어로부터 상대적인 위치에 있는 데이터를 참조할 때 사용됩니다.

프로그래머는 대게 고수준 언어를 사용하여 프로그램을 작성하므로, 이러한 주소 지정 방식에 직접적으로 관여하지는 않습니다. 하지만 컴퓨터구조나 운영체제를 공부하면서 이러한 내부 동작 원리를 이해하는 것은 컴퓨터의 성능 최적화나 효율적인 프로그래밍, 시스템 설계 등에 중요한 배경 지식을 제공합니다.

오퍼랜드를 어떤 방식으로 저장하고 참조할지는 컴파일러나 어셈블러가 프로그램을 기계어로 변환하는 과정에서 결정되며, 이는 주로 프로그램의 특정 요구 사항이나 최적화 전략에 따라 달라질 수 있습니다. 세진님께서 더 깊이 있게 해당 주제에 대해 공부하고 싶으시다면 컴퓨터 아키텍처나 시스템 프로그래밍 관련 강의나 교재를 참고하시는 것이 좋을 것 같습니다.

컴퓨터 내부 아키텍처 측면에서 이러한 메커니즘을 이해하는 것이 중요하며, 이를 통해 소프트웨어가 하드웨어 위에서 어떻게 동작하는지에 대한 개념을 잡을 수 있습니다. 이러한 지식은 문제 해결이나 시스템 최적화, 성능 분석 등의 작업을 할 때 도움이 됩니다.

프로그래밍 언어와는 직접적인 관련이 없지만, 예를 들어 시스템 프로그래머나 임베디드 시스템 개발자에게는 해당 지식이 필수적일 수 있습니다. 고수준 언어를 사용하는 개발자에게도 기본적인 이해가 성능 튜닝이나 디버깅과 같은 작업을 수행할 때 유용합니다.

채널톡 아이콘