|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
Как реализовать порты ввода-вывода в симуляторе процессора?01.01.2024, 16:58. Показов 3587. Ответов 4
Метки нет (Все метки)
Здравствуйте!
Я пишу учебное приложение для изучения Ассемблера и мне нужно реализовать порты ввода вывода так, чтобы к ним можно было подключать виртуальную периферию. Как же реализовать такую функциональность? Если делать порты просто массивом, то как мне оповещать периферию о том, что в порт поступило следующее значение, особенно, если оно не отличается от предыдущего?
0
|
|
| 01.01.2024, 16:58 | |
|
Ответы с готовыми решениями:
4
Реализовать прерывание через порты ввода-вывода Порты ввода/вывода Порты ввода/вывода |
|
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406
|
|
| 01.01.2024, 17:40 | |
|
1. Эмулировать систему команд и реагировать на каждую команду in, out
При этом вызывается управляющая программа каждого устройства, которая должна реагировать (каждая) на свои адреса и данные. 2. Если внешнее устройство простое, например 7-сегментный дисплей, то можно использовать обработку по таймеру.
0
|
|
|
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
|
||
| 07.01.2024, 00:49 | ||
Сообщение было отмечено Mikl___ как решение
Решение
1
|
||
|
Эксперт Hardware
|
|||||||
| 24.01.2024, 06:06 | |||||||
Сообщение было отмечено Mikl___ как решение
РешениеDR0-DR7, два из которых DR4.5 отправлены в резерв и не используются. В савокупности, отслеживая обращения к памяти они позволяют устанавливать аппаратные точки-останова на её чтение, запись, или исполнение. Более того, если в регистре управления процессором CR4 сброшен бит[3] "Debug Extensions", то под надзор силовых структур попадают и обращения к портам ввода-вывода I/O. Взяв за основу фишку с отслеживанием физических портов, можно написать к примеру эмулятор какого-нибудь внешнего девайса, типа флопика или LPT/COM устройства.По сути, регистры отладки DRx доступны только в реальном режиме процессора, однако имеется забытый инженерами люк, через который можно оперировать ими и в защищённом режиме, прямо под юзером. Суть в том, что при переключении процесса планировщиком, он сохраняет весь контекст активного треда в структуре "Context", куда сбрасываются в т.ч. и регистры отладки. Функциями Get/SetThreadContext() мы можем сохранять и восстанавливать контекст своего (или чужого) потока в любой момент - это позволяет модифицировать отладочные регистры в сохранённом контексте. Именно так эмулирует обращения к портам I/O весь нормальный софт, а не указанными выше способами. В Win7 х64 контекст процесса выглядит как в дампе ниже, а на системах х32 немного иначе:Context
Регистры DR0:7 позволяют устанавливать всего 4 аппаратных точек-останова за 1-раз. При этом в DR0:3 мы должны указать адрес бряка, DR6 является информационным, а DR7 играет роль конфигуратора. Рисунок ниже описывает назначения бит каждого из регистров. Чтобы перехватить обращения к портам, нужно "тип точки" выставить в 10b.
2
|
|||||||
|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
| 25.01.2024, 15:44 [ТС] | |
|
Господа, спасибо!
Скажите, что можно почитать по архитектуре простейших компьютеров, вроде Спектрума? Знаю "Код" Чарльза Петцольда.
0
|
|
| 25.01.2024, 15:44 | |
|
Помогаю со студенческими работами здесь
5
Порты ввода/вывода Порты ввода /вывода AVR Порты ввода/вывода ATtiny2313: порты ввода-вывода GSM модуль SIM900, порты ввода-вывода. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|