Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Эмулятор intel8086


Автор: rudolfninja 17.1.2014, 15:29
Доброго времени суток.
Стоит задача написать эмулятор микропроцессора c++. Реализовать регистры и память получилось. Возникает вопрос как быть с командами? Надо как-то реализовать все ассемблеровские команды и связать их как-то с опкодом. С реализацией проблема в том, что одна команда может выполняться по-разному, в зависимости от способа адрессации операндов.
Если у кого есть мысли, как заставить работать команды процессора - поделитесь пожалуйста.

Спасибо.

Автор: xvr 17.1.2014, 18:09
Цитата(rudolfninja @  17.1.2014,  15:29 Найти цитируемый пост)
Стоит задача написать эмулятор микропроцессора c++.

Возьмите готовый, и не мучайтесь. http://wiki.qemu.org/Main_Page, http://bochs.sourceforge.net/

Автор: rudolfninja 17.1.2014, 18:11
Готовый не катит, т.к. его потом надо будет доработать. Ну то есть его надо будет использовать как часть большого проекта.

Автор: xvr 17.1.2014, 18:29
Цитата(rudolfninja @  17.1.2014,  18:11 Найти цитируемый пост)
Готовый не катит, т.к. его потом надо будет доработать.

Ну так берите и дорабатывайте - они оба в сорцах и с документацией

Автор: tzirechnoy 17.1.2014, 19:50
Цитата
Возьмите готовый, и не мучайтесь. QEMU, Bochs


cable3, опять жэ.

Цитата
т.к. его потом надо будет доработать.


Тем более -- там исходников меньшэ 4 килобайт smile.

Автор: rudolfninja 18.1.2014, 18:18
Цитата(tzirechnoy @  17.1.2014,  19:50 Найти цитируемый пост)
cable3, опять жэ.

А можно ссылочку на cable3?

Автор: tzirechnoy 19.1.2014, 13:01
Цитата
А можно ссылочку на cable3? 


google://cable3 emulator

Автор: rudolfninja 20.1.2014, 10:11
Что то я не нахожу линк, где можно скачать его...нашел
Блин, как-то в них во всех много исходного кода, а  в cable3 вообще ничего непонятно...если, конечно, я нужные исходники смотрю

Автор: tzirechnoy 20.1.2014, 12:37
Цитата
 а  в cable3 вообще ничего непонятно...


Что ты хочешь -- это ioccc. Впрочем, при Вашэм незнании Си -- будет, я думаю, полезно хотя бы развернуть дефайны в линейный структуированный код. И нестандартную адресацыю массивов -- перевести в стандартную. Так, для тренировки -- глядишь, более-менее поймёте как на Си писать.

Автор: rudolfninja 20.1.2014, 13:31
Цитата(tzirechnoy @  20.1.2014,  12:37 Найти цитируемый пост)
Впрочем, при Вашэм незнании Си

Как-то Вы, почти безосновательно, сделали выводы о моем незнании Си. Не думаю, что Вы знаете Си намного лучше чем я.
Из того, что написано тут
Цитата

http://ioccc.org/2013/cable3/cable3.c

можно слабо представить как реализована у него система команд да и сам микропроцессор в целом.

Автор: tzirechnoy 20.1.2014, 14:32
Цитата
можно слабо представить как реализована у него система команд да и сам микропроцессор в целом.


Ну, почему жэ. Учитывая, что это -- как раз код системы команд (ну, ещё небольшого куска видеоадаптэра и клавиатуры с таймером) -- как раз именно это из данного кода и можно выяснить.

PS Да, если таки последуете моему совету и пойдёте изучать Си по этому коду -- то учтите, что на самом деле ?: -- не единственный условный оператор в Си. Есть ещё if и switch как минимум.

Автор: LeonidPr 4.2.2014, 12:56
Цитата

Стоит задача написать эмулятор микропроцессора

Только микропроцессора? тогда не сказать что это так уж сложно,  берете доку на систему команд и вперед, а вот если вам нужен эмулятор машины на этом проце - тут, как уже говорилось, вам прямая дорога в сторону доработки уже существующих!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)