begoon wrote:Выложил в виде проекта исходники эмулятора I8080, которые являются сердцем моих эмуляторов РК.
Меня очень озадачил вот какой вопрос, джентльмены, специалисты по
С/С++.
Вы свои эмуляторы пишете как EXE-шники, или исполняемые файлы.
Мы же сейчас
пытаемся написать эмуляцию I8080 в виде DLL-библиотеки.
Если я ничего не путаю, динамическая
DLL-библиотека, будучи единожды загружена,
разделяется всеми процессами, которым она нужна.
Так если мы в своей
DLL-модели
I8080 объявляем регистры
I8080 и др. в виде переменных
ну, скажем, как-то так:
Code: Select all
//--------------------------------------------
LONGLONG prev_time; // Предыдущее время
IDEBUGPOPUP *dbPopup;
BYTE regCMD; // Регистр команд 8-бит
BOOL iniRES; // Сброс по инициализации 3 такта
BOOL tmpRES; // Сброс по входу RESET
BOOL tgINTE; // Триггер "Разрешения прерывания"
BOOL tgHLDA; // Триггер "Подтверждения захвата"
BOOL tgHALT; // Триггер "Подтверждение останова"
INT cntRES; // Счетчик тактов сброса
INT takt_T; // Номер такта
INT max_TM; // Максимальный такт цикла
INT cycleM; // Номер цикла
Ну и
в схеме моделирования задействуем 2 экземпляра I8080.
Первый - загрузит свою
DLL-модель, инициализирует переменные...
Второй,
как мне представляется,
вторую копию DLL загружать не должен,
и как им делить в таком случае меж собой переменные и регистры?
Или я ошибаюсь по поводу загрузки
DLL-библиотеки? Поясните, если в курсе,
как правильно эти переменные-то объявлять в случае
DLL-библиотек?