|
1 / 1 / 0
Регистрация: 18.10.2013
Сообщений: 92
|
|
Эмулятор ZX Spectrum на STM32f421.10.2013, 20:38. Показов 252834. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|