169 похожих чатов

В закромах нашёл старый институтский проект. Решил переписать на vue/ts,

может кому будет интересно (github.com/rokkerruslan/i8080). Что за проект?
В институте писали под Intel 8080 (во многих институтах изучают это старьё, так как принципы не поменялись, а проц простой), но в эмуляторе была проблема, не работала инструкция JC (если знаете на базовом уровне как работает cpu то понимаете что многие алгоритмы писать не удобно, а для обучения удобство главное). Ну и я решил реализовать свой.

В целом он работал, но хреново (небыло многих нужных вещей). И тут опа, попадается мне на глаза (3 года как закончил институт). Я тут же расчехлил vue и typescript, быстро нарисовал интерфейс, несколько выходных и уже вышло что-то готовое.

Хоть и переписан был в быстром темпе, но всё же нашлось время на такую штуку как отладчик, так что можете заценить.

Итого, что есть:
- Ассемблер - связка лексического/синтаксического анализатора, вычислителя и кодогенератора.
- Эмулятор - тут особо нечего сказать, эмулятор как эмулятор, только имеется поддержка останова цикла выполния инструкций для точек останова (debugger).
- Редактор - связыват работу двух предыдущих компонент.

Всё работает очень просто, пишите программу, нажимаете Go, далее пройдёт цикл ассеблирования, загрузки исполняемого файла в память эмулятора и начнётся собственно выполнение. Можно выполнять программу по шагам или продолжить выполнение до следующей точки останова (частота выборки меняется в поле `frequency`).

Отладка - работает как в обычных gui редакторах - клик мышкой по области левее строки, как только выполнение дойдёт до этой инструкции cpu встанет (внутри работает достаточно сложно из-за необходимости поддержки со стороны всё трёх компонент, от ассемблера нужна генерация отладочной информации (какая инструкция на какой строке), от эмуторятора - способ остановки выполнения, от редактора - визуализаций брейкпоинтов и интерфейс для их переключения, но эти сложности упрятаны..

Интерфейс позволяет просматривать полное состояние CPU на всём этапе исполнения программы, значения регистров (program counter, stack pointer, accumulator etc), флагов состояния процессора, а как же любого участка памяти. При этом, когда выполнение приостановлено можно менять эти значения. Посылать прерывания можно и во время выполнения. Реализация интерфейса использует vue.

Бред? Да, бред, спросите зачем? Просто по фану. Много людей в институте обучается на i8080, может кому и пригодиться. Да и как пример hello-world приложения на vue которое чуть больше чем 10 строчек кода (суммарно весть проект без yarn.lock менее 10к строк кода).

На странице examples, есть примеры программ. Можете запустить локально, ничего не надо кроме node/yarn (всё работает в браузере).

have fun.

P.S. Ссылочка на github page - rokkerruslan.github.io
P.S.2. Переписывал в торопях (практически в одну итерацию), будет некое кол-во регрессий.
P.S.3. Мобилки нет (просто не представляю как такой интерфейс должен выглядеть на мобильных устройствах)

1 ответов

9 просмотров

STC и CMC не работают. посмотрел в исходник - там ж-а. примерьі тоже г-о.

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
как быть с принтером? такой подход прокатит?
zamtmn
12
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Я не понимаю, это троллинг или что? Швабрика поддерживают, который буквально пишет на ассемблере взаимодействия с винапи. Я это ещё написал загрузчик и хоть что-то изучаю в о...
Shadow Akira
6
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Карта сайта