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-библиотек?