ARM 에서 의사코드중에서 일부인데여

puresupe의 이미지

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

vacancy의 이미지


Pipeline때문입니다.

.. 에 어떻게 더 설명드려야 할지 모르겠네요.

다음 분께 패스 ;; -_-;

prio의 이미지

명령어를 수행하기 위해서는 여러 일들이 필요하지요.

명령어를 메모리에서 읽어오고, 명령어를 해독하고, 레지스터에서 값을 읽어 오고, 등등..

명령어 수행을 여러 작은 단위의 일로 쪼개 놓고 나면,

같은 시간에 더 많은 일을 할 수 있습니다.

공장의 컨베이어 벨트를 생각하시면 맞을겁니다.

차를 한 대 만들고, 다시 다 만들고 하는 것보다

의자 달고, 핸들 달고, 문 달고 하는 식으로 여러 대를 동시에 만드는 게 효율적이지요.

잡설이 길었는데,

결론적으로 ARM에서 일을 쪼갠 구조 상,

'명령어를 메모리에서 읽어오는 단계' 와

'레지스터의 값을 읽어오는 단계'가 두 사이클 차이가 나기 때문입니다.