LINUX.ORG.RU

В разработке игра, где программируешь в машинных кодах. DECU EMU

 


1

3

Прочитав первые две главы Криса Касперского «Техника отладки программ без исходных кодов», я вдохновился на написание простого эмулятора, где мы как в старые времена пишем в hex редакторе опкоды инструкций.

Очень даже занимательный процесс, особенно учитывая, что инструкций всего 16 и их можно запомнить. Если проект не заглохнет и будет интересен мне и далее, то я сделаю сборку для android и аврора, где можно будет делать игры прямо вписывая машинные инструкции. Мне кажется, что такое уровень сложности должен кого-то привлечь.

Ну вот, с помощью мотивации я сделал себе два прекрасных дня, и теперь можно продолжить читать книгу.

https://habr.com/ru/articles/871634/

Перемещено hobbit из games

Ответ на: комментарий от vM

Мелкий недочёт: после прогона r команда d для отладки сразу не срабатывает. Нужно сначала явно переключиться в i или m

Хорошо, посмотрю как исправить.

peeruoeso
() автор топика
Ответ на: комментарий от vM

Я тут поспал и понял, что надо два JCC поменять на другие условия. Отныне не будет JC и JS. Будет JL и JA, наверное так. Потому что ой как не хватает проверок на меньше или больше, а проверку на Carry флаг можно огранизвать самому, просто сложив

PUSH X
PUSH A
ADD A, X
POP X
TEST A, X
POP X
JL 0x1400
peeruoeso
() автор топика
Ответ на: комментарий от vM

Чем JA отличается от JNC ( или JC, в зависимости от того, как вычисляется C привычитании/сравнении )?

Я не думал об этом, мне сложно понять в чем здесь понимание. Сейчас попытаюсь разобраться. Если мы вычитаем из меньшего большее, то получаем C. Хорошо, значит C, это меньше при вычитании или прибавлении, даже при прибавлении то же самое. А что посоветуете, я сейчас что-то плохо понимаю зачем я сделал JS, когда отрицательное значение получается, если с JC всё понятно, то зачем JS, может какой-нибудь другой флаг лучше выбрать, как вы думаете?

peeruoeso
() автор топика