Автор Тема: Как эмулировать cpu?  (Прочитано 8950 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ivan_XIII

  • Пользователь
  • Сообщений: 478
  • Пол: Мужской
  • All is dust
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #30 : 25 Ноябрь 2015, 09:28:19 »
Первый FarCry чудесно работает и на Win7, и на Win8, и на Win8.1, причем на 64-разрядных, и без всяких танцев с бубном и виртуалок (в 8.1 понадобился режим совместимости с XPSP3). Проверял лично на двух ПК с разным современным железом и одном ноуте, так что ТС или тролль, или у него с дистрибутивом игры что-то не то, или не стоят драйверы, или просто человек мается дурью.

Оффлайн xttx

  • Пользователь
  • Сообщений: 240
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #31 : 27 Ноябрь 2015, 11:08:56 »
Тут понятно что троллинг, конечно, но было бы очень здорово, если бы кто ни будь написал небольшую статью о том как сделать эмулятор с нуля. Реально с нуля, а ля "что бы открыть файл, выберите в меню 'файл' пункт 'открыть'...".
То есть там примерно могло бы быть: булева алгебра, системы счисления, архитектура процов в общем виде, ассемблер, простейший язык высшего уровня (хоть бы и бейсик какой ни будь), и, наконец, разжёванный пример написания эмулятора какого ни будь chip8.
На хабре есть стати про эмуляцию, но человека без подготовки они просто отпугнут.

Оффлайн 86LexX

  • Пользователь
  • Сообщений: 273
  • Пол: Мужской
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #32 : 27 Ноябрь 2015, 11:35:31 »
написание эмулятора CPU очень не тривиальная и сложная узко-техническая задача.
И зачем эмулятор видимо сферического CPU он что в вакууме ? нет.
наверно же не просто так пишутся ВМ конкретных аппаратно-програмных комплексов а не каких то сферических CPU.
Господа вам что не хватает ВМ для х86-EMT64 ? Писаных инженерами Intel и Microsoft ?
или кучи эмуляторов консолей и прочего портированных на все что можно ?
Вот с них и можно начать ознакомление и ковыряние,например с эмуля ZX-Spectuma,достаточно простая машинка разобранная по винтику и за документированная в свое время.

xttx небольшая статья ?  :lol: рекомендую для начала Таненбаума "Архитектура комьютера" и " Современные операционные системы".
ну и по схемотехнике что нибудь простенькое 8-битное типа Коффорна "Технические средства микропроцессорных систем".
Это что бы примерно представлять: что это такое,как оно работает и работает ли оно...
« Последнее редактирование: 27 Ноябрь 2015, 13:28:12 от 86LexX »

Оффлайн s1nka

  • Пользователь
  • Сообщений: 1571
  • Пол: Мужской
    • Steam
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #33 : 27 Ноябрь 2015, 16:19:38 »
xttx, на том же хабре есть статьи по написанию эмуля для chip8. А в целом в интернетах "миллионы" статей по написанию эмулей разных платформ.

Оффлайн 86LexX

  • Пользователь
  • Сообщений: 273
  • Пол: Мужской
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #34 : 27 Ноябрь 2015, 16:28:38 »
s1nka, Что и правда так просто ? не разобрав по винтику архитектуру и ньюансы схемотехники эмулируемой платформы ? а так же той на которой это все будет выполняться ?

Оффлайн xttx

  • Пользователь
  • Сообщений: 240
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #35 : 27 Ноябрь 2015, 18:06:41 »
Да я ж не для себя :) Просто показалось что вся эта информация, собранная в одном месте, без необходимости перелопачивать кучу книг, и ведущая к определённой практической цели, а не просто общая теория, была бы довольно востребована.
Я бы сам уже попробовал что то подобное написать, но эмуляторов никогда не программировал, а всё остальное - 1ый курс любого тех-вуза, без основной изюминки нет смысла его перепечатывать.

небольшая статья ?  :lol:
Согласен... Смешно...

на том же хабре есть статьи по написанию эмуля для chip8
Конкретно о ней и думал когда пост писал. Вот сейчас ещё раз по ней пробежался... Ну допустим, если не знаешь архитектуру, конкретно в данном случае ещё можно будет как-то разобраться, но если не знаешь ассемблера - поплывёшь. А я как раз и хотел собрать всю инфу в одну кучу.


Оффлайн s1nka

  • Пользователь
  • Сообщений: 1571
  • Пол: Мужской
    • Steam
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #36 : 27 Ноябрь 2015, 18:31:46 »
86LexX, xttx, я уже запутался, мы сейчас о чём?
ИМХО. Если об эмуляции chip8, то в общем то написать эмулятор этой системы ничего сложного не содержит. Написать парсер машинных кодов и выполнять их.
Опять же если брать за основу более сложные системы, например PS3 где есть как минимум 8ми ядерный процессор, то тут базовыми знаниями ну никак не обойтись. Можно конечно написать запускатор игр, это легче, чем эмуляция железа.

Цитата: xttx
сли не знаешь ассемблера - поплывёшь

Опять же миф об ассемблере. В целом скорость написания ПО на нём ниже, чем на высокоуровневых ЯПах. Ошибок допустить можно больше. Дебажить код сложнее. А читать чужой код так вообще веселье. НО к нему быстро привыкаешь.

Оффлайн xttx

  • Пользователь
  • Сообщений: 240
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #37 : 27 Ноябрь 2015, 19:23:16 »
86LexX, xttx, я уже запутался, мы сейчас о чём?
ИМХО. Если об эмуляции chip8, то в общем то написать эмулятор этой системы ничего сложного не содержит. Написать парсер машинных кодов и выполнять их.
Ну лично я всё о потенциальной возможности написания глобальной такой статьи, о том, как написать эмулятор.
Практическая реализация эмулятора чип8 вряд-ли кого-то интересует.
Помимо парсера опкодов, нужно ещё память в массив, регистры в переменные, стэк в arrayList, основной цикл подогнать что б крутился с нужной частотой, прерывания от кнопок, графика, звук и... всё собственно :). Основные компоненты консоли есть, учится на нём можно.

Опять же если брать за основу более сложные системы, например PS3 где есть как минимум 8ми ядерный процессор, то тут базовыми знаниями ну никак не обойтись. Можно конечно написать запускатор игр, это легче, чем эмуляция железа.
Ну да, после чип8 только за PS3 и браться... Зачем из крайности в крайность? Геймбой, нес... Очень удобно, много инфы, много исходников, есть свои заморочки и достаточно интересно ...

Опять же миф об ассемблере. В целом скорость написания ПО на нём ниже, чем на высокоуровневых ЯПах. Ошибок допустить можно больше. Дебажить код сложнее. А читать чужой код так вообще веселье. НО к нему быстро привыкаешь.
Зачем писать ПО на асме? Разве что кусочек встроить, в котором 100500 раз в секунду надо в цикле что-то простенькое делать (да и то сомнительно, т.к. скомпиленная реализация на с, мало чем будет отличатся...). Я имел в виду что ассемблер нужен что бы понимать что делает программа, для системы, которую ты пытаешься за эмулировать.

Оффлайн s1nka

  • Пользователь
  • Сообщений: 1571
  • Пол: Мужской
    • Steam
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #38 : 27 Ноябрь 2015, 20:19:16 »
Цитата: xttx
Я имел в виду что ассемблер нужен что бы понимать что делает программа, для системы, которую ты пытаешься за эмулировать.

Я тебя понял. Под "ПО" я подразумевал и в том числе игры. В целом хотел донести мысль, что асма бояться нет смысла.

Цитата: xttx
Ну лично я всё о потенциальной возможности написания глобальной такой статьи, о том, как написать эмулятор.

http://fms.komkon.org/EMUL8/HOWTO.html Всё уже давно написано. Насчет русского варианта не уверен, хотя должен быть уже.

Цитата: xttx
Геймбой

Вот отлично все расжевано http://habrahabr.ru/users/creker/topics/ . Я читал статьи, но не решился повторять уже в коде.

Оффлайн 86LexX

  • Пользователь
  • Сообщений: 273
  • Пол: Мужской
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #39 : 28 Ноябрь 2015, 01:23:16 »
Вот отлично все расжевано http://habrahabr.ru/users/creker/topics/ . Я читал статьи, но не решился повторять уже в коде.
Хорошая статья,не поленился чел...вот я о чем и говорил с самого начала,надо разобрать архитектуру по винтику,потом даже такты считать и недокументированные команды делать, прерывавания,диспетчер памяти фишки аппаратные,звук,а если еще и GPU есть  --- в общем мрак полный...
Это надо маньяком быть что б что то получилось внятное.
хотя Speccy сделали,амигу до сих пор пилят конца не видно...
Видимо так и появилась большая куча говноэмулей  --- тормозящих на современной базе,хрипящих звуком и лагающих картинками.
похоже криво лепят особо не разбираясь с исходников конца 90-2000 что оставили истинные спецы и фанаты.

Оффлайн s1nka

  • Пользователь
  • Сообщений: 1571
  • Пол: Мужской
    • Steam
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #40 : 28 Ноябрь 2015, 08:01:06 »
86LexX, проблема старого железа это минимум информации. Ту же Электронику заэмулировали только в 2015 году. А новое железо слишком сложное для изучения одним человеком. В этоге полноценных эмуляторов железа немного, зато сотни запускаторов игр.

Оффлайн xttx

  • Пользователь
  • Сообщений: 240
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #41 : 28 Ноябрь 2015, 14:54:02 »
s1nka, Спасибо за ссылку, это уже интересно. Плохо понял про синхронизацию и вообще ничего не понял про звук. Буду читерить - смотреть его исходники. Вобщем попробую это дело воспроизвести, может и получится чего...

Оффлайн Vladislav2000

  • Пользователь
  • Сообщений: 10
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #42 : 30 Ноябрь 2015, 16:08:54 »
А поддерживает ли farcry opengl 2.0?

Оффлайн s1nka

  • Пользователь
  • Сообщений: 1571
  • Пол: Мужской
    • Steam
    • Просмотр профиля
Re: Как эмулировать cpu?
« Ответ #43 : 30 Ноябрь 2015, 16:26:20 »
Vladislav2000, Far Cry вышел 23 марта 2004 года, а OpenGL 2.0 вышел 7 сентября 2004 года.