|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
|
Эмулятор ZX Spectrum на STM32f421.10.2013, 20:38. Показов 253366. Ответов 340
Метки нет (Все метки)
Написал эмулятор процессора Z80. Использовал отладочную плату STM32f4-discovery, к ней подключен LCD по FSMC. К PA[0-4](входы) и PC[0-7](выходы) подключается стандартная спектрумовская клавиатура (у меня ее правда нет, поэтому пока просто замыкаю пины проводком :)). Пока не реализован тайминг выполнения команд и нормальные прерывания от дисплея (возможно на нормальный вывод на LCD не хватит ресурсов). Но заветная надпись....
вот она!!! Т.к. это мой первый проект на ARM буду рад услышать критику или предложения, ну и вопросы. [34.63 Кб]
1
|
|
| 21.10.2013, 20:38 | |
|
Ответы с готовыми решениями:
340
Нужно настроить эмулятор мобильного телефона MEMU чтобы приложения не видели что это эмулятор Qt spectrum Audio Spectrum |
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||||||||
| 12.11.2013, 15:13 | ||||||||
r0=10; r1=15; __asm("sub r0, r1"); Это правильно?В принципе правильно. Только Вам же надо передать в асм-вставку слагаемые, а потом получить из асм-вставки флаг V, так ведь? Посмотрите в книжке по ссылке только Table2 и один маленький параграф после неё:
Параметры функции - два арифметических операнда, переменные или константы. Асм-вставка сможет взять эти параметры из регистров r0 и r1. Значение, возвращаемое функцией - нужный Вам флаг или сразу слово с флагами, как удобнее будет. Асм-вставка должна просто положить результат своей работы в регистр r0. Псевдокод:
0
|
||||||||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 12.11.2013, 15:14 | ||
0
|
||
|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
|||||||
| 12.11.2013, 16:25 | |||||||
Написал такой цикл.
0
|
|||||||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||||
| 12.11.2013, 17:12 | ||||
0
|
||||
|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
|||
| 12.11.2013, 18:45 | |||
#asm #endasm
0
|
|||
|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
|
| 12.11.2013, 20:09 | |
|
Догадка подтвердилась, если допустим сложить 0х7FFFFFFF и 1 то флаг V устанавливается.
0
|
|
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|||
| 12.11.2013, 20:52 | |||
ARM понимает не только 32-хбитные операнды, но и 16-тибитные, и 8-мибитные тоже.
0
|
|||
|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
||||||||
| 13.11.2013, 09:14 | ||||||||
ARM понимает не только 32-хбитные операнды, но и 16-тибитные, и 8-мибитные тоже.
Как-то все туманно, пока не вижу четкой логики, что ARM понимает все эти типы понятно, как это реализовать? С вставками вроде разобрался, привожу пример может кому будет полезно, а может кто поправит. (я пользуюсь Keil)
0
|
||||||||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 14.11.2013, 02:34 | ||
Странно... 8-0
0
|
||
|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
||
| 14.11.2013, 07:59 | ||
Странно... 8-0 На том эмуляторе все на ассемблере, и флаги выставляет АЛУ, в описании работы команд есть алгоритмы как выставляются флаги вот эта запись с того мануала. PS Вроде начинаю вникать в ассемблер, нужно операнды сдвигать влево, есть спец команды.
0
|
||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 14.11.2013, 11:51 | ||
Поэтому, сделав ассемблерный код в виде Си-функции, можете не просто взять первый параметр из регистра R0, а взять его уже сдвинутым на 24 разряда влево. Ну, или отдельную операцию сдвига на 24 бита влево применить. На ассемблере это одна команда, а аналогичная подготовка операндов на Си (сдвиг их влево перед передачей в ASM) заняла бы больше кода.
0
|
||
|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
|||||||
| 14.11.2013, 16:12 | |||||||
Поэтому, сделав ассемблерный код в виде Си-функции, можете не просто взять первый параметр из регистра R0, а взять его уже сдвинутым на 24 разряда влево. Ну, или отдельную операцию сдвига на 24 бита влево применить. На ассемблере это одна команда, а аналогичная подготовка операндов на Си (сдвиг их влево перед передачей в ASM) заняла бы больше кода. Да уже понял, вот подпрограмма команды CP (сравнение)
0
|
|||||||
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
||
| 14.11.2013, 18:42 | ||
{ LDRB r0, [r0]//загружаем байт по указателю в регистре r0 в регистр r0 LSL r0, r0, #24//сдвигаем регистр LDRB r1, [r1]//загружаем байт по указателю в регистре r1 в регистр r1 CPM r0, r1, LSL #24//производим сравнение r0 и r1, r1 предварительно сдвигаем MRS r1, APSR//сохраняем регистр флагов в r1 LSR r1, r1, #24//сдвигаем r1 вправо STRB r1, [r2]//сохраняем r1 по указателю в r2 BX lr//возврат из подпрограммы } Критика приветствуется....1) Посмотрите в шпаргалке плз, нельзя ли объединить LSR+STRB, если сохранять сразу нужную четвертнку R1, добавив смещение [r2+3]. 2) Результат можно возвращать не по указателю, а как значение функции - это делается через R0. Просто напоминаю о таком ещё способе, не знаю как в Вашей программе сподручнее.
0
|
||
|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
||
| 14.11.2013, 21:30 | ||
2) насчет r0 попробую. PS Оказывается флаг С работает наоборот С=1 займа нет!
0
|
||
|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
|
| 17.11.2013, 13:36 | |
|
Ошибочки потихоньку уходят...
0
|
|
|
0 / 0 / 0
Регистрация: 23.03.2012
Сообщений: 1,017
|
|
| 17.11.2013, 17:41 | |
|
А на STM32F103ZE удастся запустить?
0
|
|
|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
||
| 18.11.2013, 08:01 | ||
0
|
||
|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
|
| 05.12.2013, 23:17 | |
|
Приветствую всех, и продолжаю...
Сегодня собрал проект в кучу, пока все сырое и на "скорую руку", но работает, ура. Отличие от предыдущего: все команды отдельными функциями, везде где можно таблицы. Исходники пока не показываю, нужно их привести в порядок.
0
|
|
|
1 / 1 / 0
Регистрация: 01.02.2010
Сообщений: 2,010
|
|
| 05.12.2013, 23:28 | |
|
Ошибки тестов, все удалось побороть?
0
|
|
|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
||
| 06.12.2013, 07:40 | ||
У Василия(Lisicin), как я понял, тоже не все прошли. Вот теперь посещают мысли как буду грузить программы, карточку нужно прикрутить к Dyscovery или компаратор пока прицепить и с плеера грузиться.
0
|
||
| 06.12.2013, 07:40 | |
|
Игры на ZX-Spectrum bass spectrum Кассеты / ZX Spectrum Spectrum bass.dll ZX Spectrum на AVR, V2_0 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|