작성
·
179
0
어셈블리어 연습을 하다가
[변수], [레지스터] 관련 내용이 이해가 잘 안되어서
https://stackoverflow.com/questions/39474332/assembly-difference-between-var-and-var
에 관련 내용이 있어서 참고를 하였습니다
그런데 여기에서 어셈블리어의 [변수] == c에서의 *변수라는
내용이 있는데 이게 왜 이런 것인지 이해가 잘 안 됩니다
엄밀히 말하자면 어셈블리어 프로그램으로 계속 실험을 하니
[레지스터] == *레지스터인 것은 이해가 되었는데
[변수] == (*변수)가 아닌 (변수)가 맞는 것 같아
헷갈립니다...
p.s. 레지스터에 값을 이동시킬 때 동일한 값이어도
해당값이 주소값인지 변수의 값인지 컴파일러가 알고 스스로 구분하나요?
ex) a = 0x30203020 &a = 0x30203020
답변 1
0
만약 포인터를 잘 이해하고 계신다면 굳이 질문을 하지 않으셨을 것이고,
포인터에 대한 이해도가 부족하면 *와 관련된 내용은 애당초 이해할 수 없는 내용입니다.
계속 반복적인 대답을 드릴 수밖에 없는데, 학습 방법에 문제가 있으십니다.
초반부터 그렇게 디테일에 힘을 빼면 안 되는게
애당초 진도를 쭉 나가서 퍼즐이 맞춰줘야 이해가 가는 부분이 많습니다.
아주 사소한 부분에 대해 정말 넘어가지 못하는 성격이라면,
스스로 결론을 도출하셔야 하고 질문을 통해 답을 얻으려 하면 안 됩니다.
왜냐하면 앞으로 프로그래머 인생에서 그렇게 일일히 답변을 해줄 사람은 없기 때문입니다.
저의 경우 일단 이해한 내용을 토대로 저만의 가설을 세우고 넘어가는데
만약 제가 이해한 내용에 문제가 있다면 언젠가 미래에 모순적인 상황을 만날 수 밖에 없게 되고
그렇게 또 잘못된 이해를 교정하면서 경험치를 얻게 됩니다.
그리고 주소 값인지 아닌지는 전혀 알 수 없습니다.
컴퓨터 관점에서는 단순한 정수에 불과하죠.
앗 다시 한 번 차분하게 생각을 하니 이해가 되었습니다;; 처음에는 왜 이해가 안 되었던 건지 모르겠네요 ㅠㅠㅠ
조언해주신 대로 최대한 노력해 보겠습니다 감사합니다!