2015-04-16 4 views
0

У меня возникли проблемы с моим ассемблере:MIPS сборки, добавив, прыгать

# Program testing 
     .text 
     .globl main 

main: ori $4,$0,1 
     addiu $4,$4,2 
     addiu $8,$10,4 
     addiu $2,$1,1 
     addiu $3,$1,1 
     addiu $5,$1,1 
     j main+8  #ERROR HERE 
     sll $0,$0,0 

# End of file 

Я хочу добавить к моему скачку. Мой профессор говорит, что это сработает, но я продолжаю получать ошибку синтаксического анализа

Мое значение MIPS в PCSPIM:
проверено на голой машине, отложенных ветвях и отложенной нагрузке.

Кто-нибудь знает, что не так? Есть ли проблема выравнивания слов?

+0

Возможно SPIM просто не поддерживает это. Вы можете попробовать 'la $ t0, main + 8' /' jr $ t0', который, по-видимому, принимает SPIM. – Michael

ответ

1

Здесь нет проблем с выравниванием слов. Ваша проблема заключается в том, что используемый вами ассемблер не интерпретирует label+displacement как целевой адрес.

Поскольку каждая инструкция занимает 4 байта, вы фактически пытаетесь выполнить две инструкции перед меткой . Таким образом, просто добавьте новый ярлык, на котором вы действительно нацелитесь на прыжок.

т.е .:

# Program testing 
     .text 
     .globl main 

main: ori $4,$0,1 
     addiu $4,$4,2 
jump_target: 
     addiu $8,$10,4 
     addiu $2,$1,1 
     addiu $3,$1,1 
     addiu $5,$1,1 
     j jump_target  # main+8 
     sll $0,$0,0 

# End of file 
Смежные вопросы