명령어 실행 사이클
526
안녕하세요 ㅎㅎ 운영체제 공부에 이 강의가 많은 도움이 되고 있습니다.
다른건 아니구 친구랑 공부를 하다가 나온 질문입니다.
저희가 c언어를 배울 때, 주소를 표현할 때 그 주소값 안에 들은 데이터만큼 크기를 가지고 있어서 만약에 int로 구성된 배열이면 첫번째 인덱스가 10이라는 주소이면, 두번째 인덱스는 14가 되잖아요.
근데 명령어에서 PC 레지스터를 배우면서 다음 명령어로 가기 위해서 PC+1이 되는데, 이게 현재 가지고 있는 값이 300이면 다음에 넣어지는 값이 301이더라구요. 이게 .. 주소가 16비트면.. 316이 되거나 뭐 그래야하지 않나요.,.?? ㅜㅜㅜㅜ
답변 1
0
안녕하세요 혜성님!
친구랑 공부하다가 궁금증이 생기셨군요?
저도 예전에 친구와 공부하다가 궁금증을 같이 해결하던 재밌는 추억이 있는데 부럽습니다 ㅎㅎ
혹시
이게 현재 가지고 있는 값이 300이면 다음에 넣어지는 값이 301이더라구요.
이걸 확인한 코드를 저도 확인할 수 있을까요?
0
해당 문제에서는 명령어마다 주소를 할당하는 방식으로 설명해서 그렇습니다.
문제를 보면 2바이트 단위로 접근하는 컴퓨터라고 말하고 있고
그에 맞게 명령어는 2바이트(16bit)로 이루어져 있습니다.
그리고 각 명령어마다 주소를 할당한 것이죠.
0x062A에 저장된 명령어는 0x961B로 비트로 표현하면 1001 0110 0001 1011로 총 16비트입니다.
만약 32bit CPU를 사용한다면 4바이트 단위로 주소를 할당했을 것이고
이 시스템에서 PC에 1을 올려준다면 32비트를 이동하게 될 겁니다.
만약 바이트마다 주소를 할당한다면 혜성님이 말씀하신 것처럼 다음 명령어를 실행할 때 워드 단위(여기선 2바이트)로 증가할 겁니다.
주소를 할당하는 기준(명령어 마다 or 바이트 마다)에 따라 설명이 달라질 수도 있는데
중요한건 완벽히 다음 명령어를 가리키게 한다는 점을 기억하시면 될 것 같습니다!
궁금증이 해결되셨나요?😀
0
네 궁금증은 해결 됐습니다!>_<
그럼 PC의 값은 시작할 때, 62A 였는데, 다음 명령어를 실행하면서 62B가 되는 것은 맞을까요?
들려주신 설명을 제가 이해하기로는 62B가 아니라 63A가 되는게 아닐까해서요! ㅎㅎ
개발자 후배로서 질문이있습니다.
0
192
1
선생님 조언 부탁드립니다.
0
251
0
블로그 기록
0
370
1
개인적 질문
1
378
1
전자책
0
391
1
안녕하세요 혼자 열심히 공부하고 있는데 질문이 있습니다.
0
374
1
현재 책을 구매해서 다읽었는데 강의를 들으면 좋을까요?
0
448
1
컴공과 휴학후 해야할 것
0
1436
1
프레임워크
0
501
1
고민있어요 ㅠㅠ
0
637
1
저자님
0
665
1
디바이스 드라이버
1
925
1





