ARM 에서 의사코드중에서 일부인데여
글쓴이: puresupe / 작성시간: 월, 2009/02/09 - 11:54오후
start MOV R0,#10
ADR R4,start
위의 의사코드는요
R4에다가 start위치의 어드레스를 넣는 문장인데요
실제 ADR R4,start라는 statement는 'SUB R4,PC,#OxC' 가 된다고,
책에 씌여있더라구요
제가 생각하기엔
Ox1000 start MOV R0,#10
Ox1004 ADR R4,start
에 위에 명령어들이 저장되어있다면 PC값에는 Ox1008에 저장되있어야할것같은데요
그렇다면 start 주소를 알려면 SUB R4,PC,#Ox8
이 되지 않을까 하구요
:D
Forums:
Pipeline때문입니다. ..
Pipeline때문입니다.
.. 에 어떻게 더 설명드려야 할지 모르겠네요.
다음 분께 패스 ;; -_-;
명령어를 수행하기
명령어를 수행하기 위해서는 여러 일들이 필요하지요.
명령어를 메모리에서 읽어오고, 명령어를 해독하고, 레지스터에서 값을 읽어 오고, 등등..
명령어 수행을 여러 작은 단위의 일로 쪼개 놓고 나면,
같은 시간에 더 많은 일을 할 수 있습니다.
공장의 컨베이어 벨트를 생각하시면 맞을겁니다.
차를 한 대 만들고, 다시 다 만들고 하는 것보다
의자 달고, 핸들 달고, 문 달고 하는 식으로 여러 대를 동시에 만드는 게 효율적이지요.
잡설이 길었는데,
결론적으로 ARM에서 일을 쪼갠 구조 상,
'명령어를 메모리에서 읽어오는 단계' 와
'레지스터의 값을 읽어오는 단계'가 두 사이클 차이가 나기 때문입니다.
댓글 달기