Написание функции в 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)


arrow_upward
1
arrow_downward

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

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

person ConfusedAboutCPP    schedule 06.05.2012