2013-06-05 3 views
0

PCSpim 시뮬레이션에서 점프를 사용하여 (이 그것의 일부입니다) 방법 :나는이 코드를 작성

beq $t4 ,$0 ,__less3 
    add $s2,$t3,$0 # s2=t3 
    add $s3,$t2,$0 # s3=t2 
    j __next1 

__less3: 
    add $s2,$t2,$0 # s2=t2 
    add $s3,$t3,$0 # s3=t3 
__next1: 
    slt $t4, $t1, $t0 # t4=(t1<t0) 
    beq $t4 ,$0 ,__les1sk 

문제는 그 시뮬레이션은, 그것을 4 라인과 점프를 할 필요 얻을 때 줄 7 (다음 명령)을 수행 한 다음 줄 10으로 건너 뜁니다.$ s2의 레지스터가 $ t3의 값으로 남아있는 대신 $ t2로 변경되기 때문에 알고 있습니다.

답변

0

MIPS, PCSpim는 "분파 지연"를 채용하여 시뮬레이션 프로세서 : 즉시 점프 대상 (따라서 "지연"점프)로 분기하기 전에 다음 분기 명령을 실행한다. 이는 효율성 측정 값입니다. 프로세서가 "추가"명령에 대한 대부분의 작업을 완료 했으므로 그 노력은 낭비되지 않습니다. 컴파일러는 코드를 생성 할 때 이것을 설명합니다.

나는 시뮬레이터에 지연된 분기 기능을 사용하지 못하도록하는 옵션이 있다고 생각한다.