MIPS. Уточнение слова - PullRequest
       14

MIPS. Уточнение слова

0 голосов
/ 14 марта 2012

Если я напишу

.data                        
 one:   .word 1

и позже в своей программе я пишу

beq $a3,one,loop1

это будет работать? т.е. опаздывает ли метки в качестве аргументов?

Ответы [ 3 ]

1 голос
/ 14 марта 2012

Использование beq $a3, 1, basecase - это совершенно неправильно .Это сработало для вас, потому что регистр 1 ($ at) оказался равным регистру $ a3.Это совпадение не слишком удивительно, потому что $at используется ассемблером MIPS в качестве временного регистра.

Двоичное кодирование для инструкции beq использует: биты 31:26 для кода операции (000100);биты 25:21 для первого номера регистра;биты 20:16 для второго номера регистра;биты 15: 0 для смещения адреса.Там нет положения для немедленного значения для этой инструкции.

1 голос
/ 14 марта 2012

Нет. Сначала вам нужно будет загрузить слово в регистр: lw $t0, one

MIPS - это архитектура загрузки / хранения. Единственный способ получить значение из памяти - использовать инструкцию загрузки.

0 голосов
/ 14 марта 2012

На самом деле, я закончил этим:

beq $a3, 1, basecase    #check if value at $a3 is equal to 1

этот синтаксис также работает. Не обязательно иметь 2 регистра.

...