Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ISA для стековой архитектуры, Набор команд для cpu с стек-архитектурой 
:(
    Опции темы
rudolfninja
Дата 17.2.2015, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: нет
Всего: 6



Добрый день.
Дано: есть примитивный процессор на стековой архитектуре (ну его еще нет, но будет). В стек помещаются операнды, обрабатываются в ALU (элемент с верхушки стека и следующий за ним) и результат помещается в верхушку стека. Так же есть RAM, которая обменивается данными со стеком.
Задача: разработать набор команд для этого процессора, который позволит решать задачу поиска минимального элемента массива.
Вот что я надумал:
1) Помещаем в стек массив
2) Помещаем в стек количество необработанных элементов массива
3) Помещаем в стек число 0 (для сравнения с количеством необработанных элементов)
4) Сравниваем верхушку стека (число 0) со следующим элементом стека (количество необработанных элементов). Вопрос, что будет в стеке на верхушке? Я так полагаю, что результат сравнения, 0 - если равны и не ноль - если не равны. Еще вопрос: на данном этапе в стеке будет только массив и результат сравнения?
5) Если на верхушке стека 0 - переходим в конец программы.
6) Помещаем в стек количество необработанных элементов массива.
7) Декрементируем количество необработанных элементов.
8) Выталкиваем из стека количество необработанных элементов в RAM.
9) Сравниваем элемент с верхушки стека со следующим и кладем меньший на верхушку стека (специальная команда MIN будет, которая делает это). Вопрос: что сейчас в стеке? Я так полагаю, что там элементов на 1 меньше, чем во всем массиве...
10) Переходим в п.2.

Собственно, вот. Т.к. до реализации процессора еще рано, то проверьте, пожалуйста, работоспособность этого алгоритма и помогите составить набор команд, чтоб все это работало.
Из команд, сразу видно, нужны: push <RAM addr>, pop <RAM addr>, CMP, JE(jump if equal) <непонятно какой адрес>, DEC (декремент элемента с верхушки стека), MIN (сравнивает два последних элемента стека и кладет на верхушку минимальный), JMP. Каких еще команд не хватает?

Спасибо. 


Это сообщение отредактировал(а) rudolfninja - 17.2.2015, 10:08
PM MAIL Skype   Вверх
Pavia
Дата 18.2.2015, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: нет
Всего: 12



По стековым процессорам не специалист но по моему нужна всего 1 команда.
Да и RAM со стековым процессором как-то не вяжется.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.