У меня на Scroll Lock переключение раскладок висит: Это удобнее, так как Caps Lock тоже нужен в ряде случаев программирования, а Scroll Lock - тоже давно устаревший триггер. И находится уже вне основной части клавиатуры.
Как-то размышлял на тему и даже пытался работать над темой ("перезагрузить ASCII" в рамках пилотной архитектуры) и могу сказать, что ИМХО, в таблице ASCII имеется ряд недостатков: Первое: 32 управляющего кода - слишком много. Сейчас это - "мёртвый груз", так как большинство кодов безнадёжно морально устарело. Остаются популярными и достаточными лишь 00, 0D и 1B. Второе: Недостаточная "интуитивность" кодировки (особенно, для начинающих программистов). Почему цифра "1" и знак "!" располагаются на одной линии, а цифра "7" и знак "?" - нет, хотя они графически похожи, как "5" и "$", как "8" и "&"? (То есть, вместо «!"#$%&'()» "интуитивнее" было бы «!%#^$(?&)»: Делал как-то подобную раскладку у себя в системе. Быстро переучиваешься, привыкаешь.)
Идея симулятора появилась тогда, когда появилась необходимость переделать мой старый MMX-алгоритм под SSE для третьего лица, не имея под рукой среды разработки/отладки. И нужно было понять, почему у третьего лица конкретно этот фрагмент кода падал. В онлайн-эмуляторах отлаживать SSE-код, переделанный из MMX - удовольствие так себе. Пришлось наспех набросать симулятор с поддержкой только конкретных инструкций. Что, в итоге, помогло дистанционно интуитивно отладить код.
О высокой производительности речи не шло, так как главное было - понять, что где происходит.
onlinegdb.com, например, работает больше как реальный, а следовательно, имеет множество бюрократических нюансов (программа компилируется и т.д.). А в случае, когда на пальцах нужно показать, как взаимодействует пяток-другой инструкций третьему лицу, такое средство не подходит.
Вот и пришла мысль сделать именно бутафорский симулятор, чтобы наглядно показывал что и где в конкретном коде подводит.
P.S.: Verilog, конечно, для инженеринга незаменим вместе с GTK-wave, но Logisim позволяет более наглядно увидеть весь процесс в целом. Просто, дело вкуса! ;-) Это симулятор - своеобразный Logisim для изучения ассемблера.
Гарвардская архитектура разделяла не только код от данных, но и стек (сам i8080 сигнализирует о доступе к стеку, например, позволяя строить, хотя не "гарвардский"). Но Принстонская взяла вверх.
Почему тогда в отладчиках, на ряду с раскруткой стека, не имеем и раскрутку регистрового файла? (Хотя, на сегодняшний день это уже не актуально.)
Набросaл черновой вариант в Verilog — примерно 386 строк чистого кода (исключая «task show»).
(Локально отлаживаю в Icarus Verilog)
Правда, отлаживать нужно ещё много, так как написал всё за два дня буквально с потолка.
(И писал спонтанно, так как саму архитектуру легко восстановить без документации прямо с потолка, придерживаясь концептуальных принципов: A2 — регистр A₂; 00 — останов; и т.д…)
Но, сам общий размер файлов в 386 строк уже говорит в пользу, что интуитивно-понятный и приветливый машинный байт-код не требует сверхъестественных технологий.
Недостаток черновика — лишний ряд десяти регистров D₀…D₉, так как архитектурно он задумывался как периферийный (Devices) с обменом по I²C-шине и достаточно сложен в реализации с моей стороны…
У меня на Scroll Lock переключение раскладок висит: Это удобнее, так как Caps Lock тоже нужен в ряде случаев программирования, а Scroll Lock - тоже давно устаревший триггер. И находится уже вне основной части клавиатуры.
Как-то размышлял на тему и даже пытался работать над темой ("перезагрузить ASCII" в рамках пилотной архитектуры) и могу сказать, что ИМХО, в таблице ASCII имеется ряд недостатков:
Первое: 32 управляющего кода - слишком много. Сейчас это - "мёртвый груз", так как большинство кодов безнадёжно морально устарело. Остаются популярными и достаточными лишь 00, 0D и 1B.
Второе: Недостаточная "интуитивность" кодировки (особенно, для начинающих программистов). Почему цифра "1" и знак "!" располагаются на одной линии, а цифра "7" и знак "?" - нет, хотя они графически похожи, как "5" и "$", как "8" и "&"?
(То есть, вместо «!"#$%&'()» "интуитивнее" было бы «!%#^$(?&)»: Делал как-то подобную раскладку у себя в системе. Быстро переучиваешься, привыкаешь.)
Идея симулятора появилась тогда, когда появилась необходимость переделать мой старый MMX-алгоритм под SSE для третьего лица, не имея под рукой среды разработки/отладки. И нужно было понять, почему у третьего лица конкретно этот фрагмент кода падал.
В онлайн-эмуляторах отлаживать SSE-код, переделанный из MMX - удовольствие так себе.
Пришлось наспех набросать симулятор с поддержкой только конкретных инструкций. Что, в итоге, помогло дистанционно интуитивно отладить код.
О высокой производительности речи не шло, так как главное было - понять, что где происходит.
onlinegdb.com, например, работает больше как реальный, а следовательно, имеет множество бюрократических нюансов (программа компилируется и т.д.).
А в случае, когда на пальцах нужно показать, как взаимодействует пяток-другой инструкций третьему лицу, такое средство не подходит.
Вот и пришла мысль сделать именно бутафорский симулятор, чтобы наглядно показывал что и где в конкретном коде подводит.
P.S.: Verilog, конечно, для инженеринга незаменим вместе с GTK-wave, но Logisim позволяет более наглядно увидеть весь процесс в целом.
Просто, дело вкуса! ;-)
Это симулятор - своеобразный Logisim для изучения ассемблера.
Гарвардская архитектура разделяла не только код от данных, но и стек (сам i8080 сигнализирует о доступе к стеку, например, позволяя строить, хотя не "гарвардский"). Но Принстонская взяла вверх.
Почему тогда в отладчиках, на ряду с раскруткой стека, не имеем и раскрутку регистрового файла? (Хотя, на сегодняшний день это уже не актуально.)
Bochs был моим основным эмулятором до установки VMware.
Инженеры не предусматривали непосредственного произвольного программного доступа ко всему Регистровому Файлу.
Спасибо!
Отдельно github ещё не открывал. Пока только в gist как эксперимент для личных нужд.
Насчёт Tang-Nano — дело не в цене: Приглянулась DE2-115, но не освоился с Quartus/ModelSim…
А Verilog-модель расписал, но интереснее было бы именно в реальном ТТЛ… :)
(Локально отлаживаю в Icarus Verilog)
Правда, отлаживать нужно ещё много, так как написал всё за два дня буквально с потолка.
(И писал спонтанно, так как саму архитектуру легко восстановить без документации прямо с потолка, придерживаясь концептуальных принципов: A2 — регистр A₂; 00 — останов; и т.д…)
Но, сам общий размер файлов в 386 строк уже говорит в пользу, что интуитивно-понятный и приветливый машинный байт-код не требует сверхъестественных технологий.
Недостаток черновика — лишний ряд десяти регистров D₀…D₉, так как архитектурно он задумывался как периферийный (Devices) с обменом по I²C-шине и достаточно сложен в реализации с моей стороны…