From ddff4431839c8e8895d522060b103b4ad1ca8389 Mon Sep 17 00:00:00 2001 From: ElectronixTM Date: Sat, 12 Apr 2025 20:00:52 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20README=20=D1=81=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B5=D0=B9=20=D0=BF=D0=BE=20=D0=B8=D1=81=D0=BF=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/README.md b/README.md index e69de29..0897cd5 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,54 @@ +# DP32-proto + +Прототип эмулятора процессора DP32 + +## Описание + +Это проект программной эмуляции и отладки процессора DP32 на языке python. В этом проекте можно найти 2 компонента - отладчик dp32dbg и эмулятор dp32emu. Первый полностью опирается на отладочную информацию в следующем формате. Это очень простой отладчик и очень нестабильный, поскольку писался с упором на скорость, а не на качество. + +```json +{ + "src": "absolute/path/to/source" + "labels" : { + "label1": 1 + "label2": 2 + ... + }, + "instructions" : { + "" : { + "lenght": 2, + "srcline": 3 + } + ... + } +} +``` + +## Установка + +Стяните данный репозиторий и выполните в корне проекта команду `pip install .` + +## Использование + +После установки у вас появятся 2 программы: + +- dp32emu - программный эмулятор процессора dp32. Принимает на вход бинарный файл с командами dp32, выполняет их и в результате своей работы выдает дамп памяти процессора после завершения работы +- dp32dbg - отладчик, опирающийся на вышеуказанный эмулятор. Позволяет выполнять действия пошаговой отладки и предоставляет базовую функциональность точек останова (но с ньюансами) + +Посмотреть инструкцию по запуску проще всего передав флаг `-h` каждой из этих программ + +## Использование отладчика + +help не встроен в отладчик, поскольку до этого его функционал не был документирован. Приведу здесь основной набор команд отладчика + +- `step/s` - выполняет одну инструкцию, на которую сейчас указывает регистр pc виртуальной машины +- `breakpoint ` - устанавливает точку останова на определенной строке исходного кода. С точками останова 2 ньюанса: + 1. Они они не могут быть установлены на комментарии или пустые строки. Если на строке больше одной операции, точка будет установлена на самую раннюю + 2. Когда виртуальная машина встретит точку останова, временно она не сможет выполнять команду continue, поскольку не предусмотрено ротации точек останова. Если нужно продолжить выполнение программы дальше - выполните одну команду step +- `continue/c` - выполняет программу до ближайшей точки останова +- `reset` - сбрасывает состояние виртуальной машины и ее память, но не точки останова +- `run` - сбрасывает состояние виртуальной машины и запускает выполнение кода +- `cbp` - очищает все точки останова +- `print/p ` - печатает содержимое регистров. Регистры записываются в формате `r1-r255`, позволяет также посмотреть адреса меток (указав название меток в качестве параметра) и системные регистры: pc, cc +- `inspect/i ` - печатает содержимое памяти по определенному адресу в определенном формате (строчная - знаковые, заглавная - беззнаковые): b/B - байт, h/H - полуслова - 16 бит, w/W - слова - 32 бита. `amount` - количество подряд идущих ячеек, содержимое которых нужно прочитать. `place` - место, с которого следует начать печать. Можеть представлять собой либо имя метки, либо полный адрес в десятичной или 16-ричной системе счисления +