2013-06-05 9 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 изменяется на $ t2 вместо того, чтобы оставаться со значением из $ t3.

ответ

0

MIPS, процессор, который имитирует PCSpim, использует «задержанное разветвление»: он выполняет инструкцию сразу после ветки до перехода на цель перехода (следовательно, «задерживает» скачок). Это показатель эффективности; так как процессор прошел большую часть работы за эту «дополнительную» инструкцию, это усилие не будет потрачено впустую. Компиляторы учитывают это при создании кода.

Я считаю, что в симуляторе есть возможность отключить ветвление с задержкой.