![]() |
|
|
![]()
|
|
| rudolfninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: нет Всего: 12 |
По стековым процессорам не специалист но по моему нужна всего 1 команда.
Да и RAM со стековым процессором как-то не вяжется. |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |