Pull to refresh

Comments 24

В попытках найти ответ на сей вопрос, я раз пять переписал эмулятор с C на C++, и обратно.
Если переписывание с C на C++ и обратно не даёт полного удовлетворения, то нужно включить в эту цепочку ещё и Rust.
16 битный процессор с регистрами с «R» в начале названия вызывают диссонанс. Почему так сделали? Чтобы было удобнее дебажить?
Почему так сделали? Чтобы было удобнее дебажить?

По-идее да, да и меньше путаницы в коде
Что делать дальше?

Делать ПО для эмулированного процессора! :)

P.S. Например, автор TTL компьютера Gigatron сейчас пишет эмуляцию процессора 6502 на данном компьютере.
А, симулятор данного компьютера уже написали и даже в виде одночипового варианта данного компьютера на STM32F405
Чтобы было ПО, нужны устройства ввода-вывода, а то на одном процессоре далеко не уедешь :D
Что делать дальше?

А нет ли желания попробовать этот процессор написать в железе: сделать ядрышко под FPGA?
Дальше на него можно попробовать портировать линукс).
Идея хорошая, но мне бы сначала устройства прикрутить :), а то какой линукс без монитора?
А зачем линуксу монитор?
ну или то, что будет играть роль устройства ввода-выводы
1) Эмулятор обычно опирается на реальное железо(которое и пытается эмалировать), а все особенности работы железа определены из физических и экономических соображений.
Т.е. почему есть та или иная инструкция, почему есть такое кол-во регистров, и т.д. это все не с потолка. Иначе складывается впечатление что автор слышал, но не понимает природу вещей.

2) «переписал эмулятор с C на C++, и обратно.» — скорее всего автор слаб в Си, и как следствие слабо представляет во что разворачиваются Си++ конструкции, какие, как, когда, где хранятся и т.п…

3) «Что делать дальше?» Как минимум почитать «Цифровая схемотехника
и архитектура компьютера» Дэвид М. Харрис и Сара Л. Харрис. И потратить лет 10-15 на подтягивания понимания Си, архитектуры и желательно плис. И тогда мы от вас получим статью о «никому не нужном эмуляторе», с еще одним абзацем обоснованным фундаментом и исходниками в которых вы по всем параметрам уверенны.
а все особенности работы железа определены из физических и экономических соображений.

Процессор виртуальный, придуманный на коленке

скорее всего автор слаб в Си

На некоторых отрезках времени было целесообразно переписать все это дело на плюсы

UFO just landed and posted this here
Эмулятор обычно опирается на реальное железо

Правда? И на какое же железо опирается JVM или CIL?

«переписал эмулятор с C на C++, и обратно.» — скорее всего автор слаб в Си

Простите, а какая тут вообще связь со знанием языка? Что может помешать переписывать тому кто отлично знает оба языка?
Я не увидел у автора статьи обоснования набора инструкции, регистров и т.п…
В кремнии или виртуальный будет ваш конечный результат, все же производительность, энергопотребление, размер на кристалле/в памяти, что-то из всего этого стоит учитывать и стремиться улучшать. И вопрос «что делать дальше» станет более очевидным.
Правда? И на какое же железо опирается JVM или CIL?

На то, на котором будет запущено jvm. Т.е. и там тоже когда разрабатывали не с потолка инструкции брали, а думали о том на чем будет выполняться. Я думаю что там тоже есть обоснования и что там есть моменты упирающиеся в реальное железо, в реальные архитектуры. А так же я считаю что скорость исполнения байт кода jvm, которая крутится на реальном железе, важна.
Думаю вы согласны с этим.

«переписал эмулятор с C на C++, и обратно.» — скорее всего автор слаб в Си
Простите, а какая тут вообще связь со знанием языка? Что может помешать переписывать тому кто отлично знает оба языка?

«кто отлично знает оба языка?» Переписывать туда и обратно? Здравый смысл, и время.
Иначе я начну сомневаться в «отличном знании», но скорей всего выясниться, что я понимаю под знанием языка Си не только его синтаксис. Думаю вы согласны с этим.
UFO just landed and posted this here
да, спасибо, поправлю
Постфикс _t обозначает любой тип, а не только структуру. В сишных гайдлайнах (например по ядру Linux) рекомендуют не удалять struct, если на то нет веских причин, дабы не создавать путаницу и делать код более читабельным
UFO just landed and posted this here
Что делать дальше?

Прикрутить LLVM вестимо

Просто было немного свободного времени, вот и решил заняться чем-то подобным
UFO just landed and posted this here
Sign up to leave a comment.

Articles