Написание функции в MIPS с глобальными переменными?

frogger:
    jal teechar
    jal update_frog
    lw $t0,game_indicator
    li $t0, 0

Хорошо, это функция. У меня полностью написаны и работают функции teechar и update_frog. Я понимаю первые две пули, но не уверен в последних двух. Как бы я написал последние две пули в MIPS?

ЗДЕСЬ ФУНКЦИЯ Инструкции:

Напишите функцию-лягушку MIPS, которая не принимает аргументов и возвращает символ (чтобы упростить тестирование). Он делает следующее:

  • Позвоните своему тичару, чтобы прочитать и повторить символ c.
  • Вызовите свой update_frog(c).
  • Если с не равно нулю, сохраните с в глобальной переменной, чтобы указать, что игра окончена, и как она закончилась. (Конечно, вы должны инициализировать эту глобальную переменную нулем.)
  • Возврат с.

Вот мой код:

frogger:
    jal teechar
    jal update_frog

Извините, у меня просто проблемы с размышлением о том, как это сделать :(


person user977154    schedule 28.04.2012    source источник
comment
На чем конкретно ты застрял? Вы знаете, как хранить значения в местоположении?   -  person Dave Newton    schedule 29.04.2012
comment
Я застрял на последних двух пулях. Да, я не совсем уверен, как сохранить значение c   -  person user977154    schedule 29.04.2012
comment
Я не могу поверить, что вы не нашли никаких ресурсов, подробно описывающих, как хранить значения в ячейках памяти: 30 секунд в Google, и я нашел это. Помогает ли это двигаться в правильном направлении? Разве в вашем классе нет учебных материалов, ассистентов, других студентов, лекций, раздаточных материалов или чего-либо?   -  person Dave Newton    schedule 30.04.2012
comment
Я искал, но я имею в виду, мне просто нужно поставить метку в разделе данных, считается ли это глобальной переменной? И нужно ли мне что-либо загружать, потому что я вызываю лягушку обновления, но как мне на самом деле получить этот c из функции? И да, я хожу на занятия, но ТА и профессор не помогают... и я не единственный, кто так думает на занятиях.   -  person user977154    schedule 30.04.2012


Ответы (1)


Ради глобальной переменной вы должны либо передать аргумент, либо использовать регистр специального назначения. Поскольку вы указали, что функция не принимает аргументы, вам придется зарезервировать регистр для хранения значения c всякий раз, когда вызывается frogger, который затем будет считывать значение из этого регистра.

Это не чистое решение для языка программирования высокого уровня, но вы сейчас находитесь в ассемблере и можете испачкать руки!

person ConfusedAboutCPP    schedule 06.05.2012