docs: добавил README с основной информацией по использованию
This commit is contained in:
54
README.md
54
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" : {
|
||||
"<offset-in-words>" : {
|
||||
"lenght": 2,
|
||||
"srcline": 3
|
||||
}
|
||||
...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Установка
|
||||
|
||||
Стяните данный репозиторий и выполните в корне проекта команду `pip install .`
|
||||
|
||||
## Использование
|
||||
|
||||
После установки у вас появятся 2 программы:
|
||||
|
||||
- dp32emu - программный эмулятор процессора dp32. Принимает на вход бинарный файл с командами dp32, выполняет их и в результате своей работы выдает дамп памяти процессора после завершения работы
|
||||
- dp32dbg - отладчик, опирающийся на вышеуказанный эмулятор. Позволяет выполнять действия пошаговой отладки и предоставляет базовую функциональность точек останова (но с ньюансами)
|
||||
|
||||
Посмотреть инструкцию по запуску проще всего передав флаг `-h` каждой из этих программ
|
||||
|
||||
## Использование отладчика
|
||||
|
||||
help не встроен в отладчик, поскольку до этого его функционал не был документирован. Приведу здесь основной набор команд отладчика
|
||||
|
||||
- `step/s` - выполняет одну инструкцию, на которую сейчас указывает регистр pc виртуальной машины
|
||||
- `breakpoint <lineno>` - устанавливает точку останова на определенной строке исходного кода. С точками останова 2 ньюанса:
|
||||
1. Они они не могут быть установлены на комментарии или пустые строки. Если на строке больше одной операции, точка будет установлена на самую раннюю
|
||||
2. Когда виртуальная машина встретит точку останова, временно она не сможет выполнять команду continue, поскольку не предусмотрено ротации точек останова. Если нужно продолжить выполнение программы дальше - выполните одну команду step
|
||||
- `continue/c` - выполняет программу до ближайшей точки останова
|
||||
- `reset` - сбрасывает состояние виртуальной машины и ее память, но не точки останова
|
||||
- `run` - сбрасывает состояние виртуальной машины и запускает выполнение кода
|
||||
- `cbp` - очищает все точки останова
|
||||
- `print/p <reg>` - печатает содержимое регистров. Регистры записываются в формате `r1-r255`, позволяет также посмотреть адреса меток (указав название меток в качестве параметра) и системные регистры: pc, cc
|
||||
- `inspect/i <size> <amount> <place>` - печатает содержимое памяти по определенному адресу в определенном формате (строчная - знаковые, заглавная - беззнаковые): b/B - байт, h/H - полуслова - 16 бит, w/W - слова - 32 бита. `amount` - количество подряд идущих ячеек, содержимое которых нужно прочитать. `place` - место, с которого следует начать печать. Можеть представлять собой либо имя метки, либо полный адрес в десятичной или 16-ричной системе счисления
|
||||
|
||||
|
||||
Reference in New Issue
Block a user