Эмулятор - Emulator

В вычисление, эмулятор является аппаратное обеспечение или программного обеспечения что позволяет компьютерная система (называется хозяин), чтобы вести себя как другая компьютерная система (называемая гость). Эмулятор обычно позволяет хост-системе запускать программное обеспечение или использовать периферийные устройства, разработанные для гостевой системы. компьютерная программа в электронном устройстве для имитации (или имитации) другой программы или устройства. Много принтеры, например, предназначены для имитации HP LaserJet принтеры, потому что для принтеров HP написано так много программного обеспечения. Если принтер стороннего производителя имитирует принтер HP, любое программное обеспечение, написанное для реального принтера HP, также будет работать в эмуляции принтера стороннего производителя и производить эквивалентную печать. По крайней мере, с 1990-х годов многие видео игра энтузиасты использовали эмуляторы для игры в классику (и / или забыли) аркадные игры с 1980-х годов с использованием оригинального машинного кода и данных 1980-х годов, которые интерпретируются системой современной эпохи и имитируют старые игровые приставки.

Эмулятор оборудования - это эмулятор, который принимает форму аппаратного устройства. Примеры включают DOS-совместимую карту, установленную в 1990-е годы. Компьютеры Macintosh, такой как Центрис 610 или Performa 630, что позволило им запустить персональный компьютер (ПК) программное обеспечение и FPGA -основан аппаратные эмуляторы. В теоретическом смысле Тезис Черча-Тьюринга подразумевает, что (при условии, что доступно достаточно памяти) любая операционная среда может быть эмулирована в любой другой среде. Однако на практике это может быть довольно сложно, особенно когда точное поведение эмулируемой системы не задокументировано и должно быть выведено через обратный инжиниринг. Здесь также ничего не говорится о временных ограничениях; если эмулятор не работает так же быстро, как исходное оборудование, эмулируемое программное обеспечение может работать намного медленнее, чем на исходном оборудовании, что может вызвать прерывания по таймеру, которые изменяют поведение.

"Может ли Коммодор 64 подражать MS-DOS ? "Да, [Commodore] 64 может имитировать IBM PC [который использует MS-DOS] в том же смысле, что и спасение озеро Мичиган с чайная ложка.

— Письмо в Вычислить! и ответ редакции, апрель 1988 г.[1]

В сохранении

Эмуляция - это стратегия в цифровое сохранение сражаться устаревание. Эмуляция нацелена на воссоздание оригинальной компьютерной среды, что может занять много времени и труднодостижимо, но ценно из-за своей способности поддерживать более тесную связь с подлинностью цифрового объекта.[2] Эмуляция обращается к оригиналу аппаратное обеспечение и программного обеспечения окружение цифрового объекта и воссоздает его на текущей машине.[3] Эмулятор позволяет пользователю иметь доступ к любому виду заявление или Операционная система по течению Платформа, в то время программного обеспечения работает так же, как и в исходной среде.[4] Джеффри Ротенберг, один из первых сторонников подражания как цифровое сохранение Стратегия гласит: «идеальный подход обеспечит единое расширяемое, долгосрочное решение, которое можно раз и навсегда разработать и применять единообразно, автоматически и синхронно (например, при каждом цикле обновления) ко всем типам документов и носителей. ".[5] Он также заявляет, что это должно относиться не только к устаревшим системам, но также быть мобильным для будущих неизвестных систем.[6] Фактически, когда определенное приложение выпускается в новой версии, а не адресной совместимость проблемы и миграция для каждого цифрового объекта, созданного в предыдущей версии этого заявление можно создать эмулятор для заявление, предоставляя доступ ко всем указанным цифровым объектам.

Преимущества

Василиск II имитирует Macintosh 68k с использованием кода интерпретации и динамической перекомпиляции.
  • Потенциально лучшее качество графики, чем у оригинального оборудования.
  • Потенциально дополнительных возможностей оригинальное оборудование не имело.
  • Эмуляторы поддерживают исходный вид, ощущение и поведение цифрового объекта, что так же важно, как и сами цифровые данные.[7]
  • Несмотря на первоначальную стоимость разработки эмулятора, со временем он может оказаться более экономичным решением.[8]
  • Уменьшает труд, работа часов, потому что вместо того, чтобы продолжать текущую задачу постоянного перенос данных для каждого цифрового объекта, когда-то библиотеки прошлого и настоящего операционные системы и программное обеспечение установлен в эмуляторе, эти же технологии используются для каждого документа, использующего эти платформы.[4]
  • Многие эмуляторы уже разработаны и выпущены под Стандартная общественная лицензия GNU сквозь Открытый исходный код среда, позволяющая вести широкомасштабное сотрудничество.[9]
  • Эмуляторы позволяют использовать программное обеспечение, эксклюзивное для одной системы, в другой. Например, PlayStation 2 эксклюзивный видео игра можно играть на ПК с помощью эмулятора. Это особенно полезно, когда исходную систему трудно получить или она несовместима с современным оборудованием (например, старые игровые приставки, которые подключаются через аналоговые выходы, могут не подключаться к современным телевизорам, которые могут иметь только цифровые входы).

Препятствия

  • Интеллектуальная собственность - Многие поставщики технологий внедрили нестандартные функции во время разработки программ, чтобы занять свою нишу на рынке, одновременно применяя текущие обновления, чтобы оставаться конкурентоспособными. Хотя это могло продвинуть технологическую отрасль и увеличить рыночная доля, это оставило пользователей потерянными в кошмаре сохранения с небольшим количеством подтверждающей документации из-за проприетарного характера оборудования и программного обеспечения.[10]
  • Авторские права еще не вступили в силу законы, регулирующие сохранение документации и спецификаций патентованного программного и аппаратного обеспечения в модуле эмулятора.[11]
  • Эмуляторы часто используются как Нарушение авторского права инструмент, поскольку они позволяют пользователям играть в видеоигры, не покупая консоль, и редко предпринимают какие-либо попытки предотвратить использование нелегальных копий. Это приводит к ряду юридических неопределенностей относительно эмуляции и приводит к тому, что программное обеспечение программируется так, чтобы отказываться работать, если оно может сказать, что хост является эмулятором; некоторые видеоигры, в частности, будут продолжать работать, но не позволят игроку продвинуться дальше некоторой поздней стадии игры, часто оказываясь неисправной или просто чрезвычайно сложной.[12][13] Эти средства защиты усложняют разработку эмуляторов, поскольку они должны быть достаточно точными, чтобы избежать срабатывания защиты, последствия которой могут быть неочевидными.
  • Эмуляторы требуют лучшего оборудования, чем у исходной системы.

В искусстве новых медиа

Поскольку в основном используются цифровые форматы, новое медиа искусство в значительной степени полагается на эмуляцию как на стратегию сохранения. Художники, такие как Кори Аркангел специализируются на возрождении устаревших технологий в своих произведениях искусства и признают важность децентрализованного и деинституционализированного процесса для сохранения цифровой культуры. Во многих случаях цель эмуляции в искусстве новых медиа - сохранить цифровой носитель, чтобы его можно было сохранять на неопределенное время и воспроизводить без ошибок, чтобы не полагаться на оборудование, которое стареет и устаревает. Парадокс в том, что эмуляцию и эмулятор нужно заставить работать на компьютерах будущего.[14]

В будущем системном проектировании

Методы эмуляции обычно используются при проектировании и разработке новых систем. Это упрощает процесс разработки, предоставляя возможность обнаруживать, воссоздавать и исправлять недостатки в конструкции еще до того, как система будет фактически построена.[15] Это особенно полезно при проектировании многоядерный системы, в которых ошибки параллелизма может быть очень трудно обнаружить и исправить без контролируемой среды, обеспечиваемой виртуальным оборудованием.[16] Это также позволяет разрабатывать программное обеспечение до того, как оборудование будет готово,[17] таким образом помогая проверять проектные решения.

Типы

Windows XP под управлением Желудь Архимеда эмулятор, который, в свою очередь, запускает Sinclair ZX Spectrum эмулятор.
Тетрис работает на Wzonka-Lad Эмулятор GameBoy включен AmigaOS, сам работает на Э-ОАЭ на современном Fedora Linux система.

Большинство эмуляторов просто имитируют аппаратную архитектуру - если для желаемого программного обеспечения требуется встроенное ПО или программное обеспечение операционной системы, оно также должно быть предоставлено (и само может быть эмулировано). И ОС, и программное обеспечение будут интерпретированный эмулятором, а не на собственном оборудовании. Помимо этого интерпретатора для эмулируемого двоичного файла машинный язык некоторое другое оборудование (например, устройства ввода или вывода) также должно быть предоставлено в виртуальной форме; например, если запись в определенную ячейку памяти должна влиять на то, что отображается на экране, то это необходимо эмулировать. Хотя эмуляция, если довести ее до крайности, могла бы опуститься до атомарного уровня, основывая свои выходные данные на моделировании реальной схемы виртуального источника питания, это было бы весьма необычным решением. Эмуляторы обычно останавливаются на моделировании задокументированных технических характеристик оборудования и цифровой логики. Для достаточной эмуляции некоторых аппаратных платформ требуется предельная точность, вплоть до уровня отдельных тактовых циклов, недокументированных функций, непредсказуемых аналоговых элементов и ошибок реализации. Это особенно характерно для классических домашних компьютеров, таких как Коммодор 64, чье программное обеспечение часто зависит от очень сложных уловок низкоуровневого программирования, изобретенных игровыми программистами и "демосцена ".

Напротив, некоторые другие платформы очень мало использовали прямую аппаратную адресацию, например, эмулятор для PlayStation 4.[18] В этих случаях простой уровень совместимости может хватить. Это переводит системные вызовы для внешней системы в системные вызовы для хост-системы, например, уровень совместимости Linux, используемый в * BSD для запуска собственного программного обеспечения Linux с закрытым исходным кодом на FreeBSD, NetBSD и OpenBSD. Например, пока Nintendo 64 графический процессор был полностью программируемым, в большинстве игр использовалась одна из нескольких готовых программ, которые в основном были автономными и общались с игрой через ФИФО; поэтому многие эмуляторы вообще не эмулируют графический процессор, а просто интерпретируют команды, полученные от ЦП, как исходная программа. Разработчики программного обеспечения для встроенные системы или игровые приставки часто разрабатывают свое программное обеспечение на особенно точных эмуляторах, называемых тренажеры прежде, чем попробовать это на реальном оборудовании. Это сделано для того, чтобы программное обеспечение можно было производить и тестировать до того, как окончательное оборудование появится в больших количествах, чтобы его можно было протестировать, не тратя время на копирование программы для отладки на низком уровне и без введения побочных эффектов отладчик. Во многих случаях симулятор фактически производится компанией, поставляющей оборудование, что теоретически увеличивает его точность. Эмуляторы математического сопроцессора позволяют программам, скомпилированным с математическими инструкциями, запускаться на машинах, на которых не установлен сопроцессор, но дополнительная работа, выполняемая ЦП, может замедлить работу системы. Если математический сопроцессор не установлен или не присутствует в ЦП, когда ЦП выполняет любую инструкцию сопроцессора, он выполняет определенное прерывание (сопроцессор недоступен), вызывая процедуры математического эмулятора. Когда инструкция успешно эмулируется, программа продолжает выполнение.

Структура

Обычно эмулятор делится на модули которые примерно соответствуют подсистемам эмулируемого компьютера. Чаще всего эмулятор состоит из следующих модулей:

  • эмулятор ЦП или имитатор ЦП (в данном случае эти два термина в основном взаимозаменяемы), за исключением случаев, когда эмулируемая цель имеет ту же архитектуру ЦП, что и хост, и в этом случае виртуальная машина слой может использоваться вместо
  • модуль подсистемы памяти
  • различные эмуляторы устройств ввода / вывода (I / O)

Шины часто не эмулируются по причинам производительности или простоты, а виртуальные периферийные устройства напрямую взаимодействуют с процессором или подсистемой памяти.

Подсистема памяти

Эмуляцию подсистемы памяти можно свести к простому массиву элементов, каждый из которых имеет размер, подобный эмулируемому слову; однако эта модель очень быстро выходит из строя, если какое-либо место в логической памяти компьютера не совпадает физическая память. Это очевидно, когда эмулируемое оборудование допускает расширенное управление памятью (в этом случае MMU логику можно встроить в эмулятор памяти, сделать отдельным модулем или иногда интегрировать в симулятор ЦП). Даже если эмулируемый компьютер не имеет MMU, обычно существуют другие факторы, которые нарушают эквивалентность между логической и физической памятью: многие (если не большинство) архитектур предлагают ввод-вывод с отображением памяти; даже те, у которых не часто есть блок логической памяти, сопоставленный с ПЗУ, что означает, что модуль массива памяти должен быть отброшен, если необходимо эмулировать характер ПЗУ только для чтения. Такие функции, как переключение банка или сегментация может также усложнить эмуляцию памяти. В результате большинство эмуляторов реализуют по крайней мере две процедуры для записи и чтения из логической памяти, и эти процедуры обязаны отображать каждый доступ к правильному местоположению правильного объекта.

На базовая адресация система, где память из адреса 0 адресовать ROMSIZE-1 - это постоянная память, а остальное - оперативная память, типичными являются следующие процедуры:

пустота WriteMemory(слово Адрес, слово Ценность) {    слово RealAddress;    RealAddress = Адрес + BaseRegister;    если ((RealAddress < LimitRegister) &&        (RealAddress > ROMSIZE)) {        объем памяти[RealAddress] = Ценность;    } еще {        RaiseInterrupt(INT_SEGFAULT);    }}
слово ЧитатьПамять(слово Адрес) {    слово RealAddress;    RealAddress=Адрес+BaseRegister;    если (RealAddress < LimitRegister) {        вернуть объем памяти[RealAddress];    } еще {        RaiseInterrupt(INT_SEGFAULT);        вернуть НОЛЬ;    }}

Симулятор ЦП

ЦП симулятор Часто это самая сложная часть эмулятора. Многие эмуляторы написаны с использованием «предварительно упакованных» симуляторов ЦП, чтобы сконцентрироваться на хорошей и эффективной эмуляции конкретной машины. Самая простая форма симулятора ЦП - это переводчик, которая представляет собой компьютерную программу, которая следует за потоком выполнения эмулируемого программного кода и для каждой встреченной инструкции машинного кода выполняет операции на главном процессоре, которые семантически эквивалентны исходным инструкциям. Это стало возможным, если присвоить переменная каждому регистр и флаг моделируемого процессора. Затем логика смоделированного ЦП может быть более или менее напрямую преобразована в программные алгоритмы, создавая повторную программную реализацию, которая в основном отражает исходную аппаратную реализацию.

В следующем примере показано, как интерпретатор может выполнить симуляцию ЦП. В этом случае прерывания проверяются перед выполнением каждой инструкции, хотя такое поведение редко встречается в реальных эмуляторах по соображениям производительности (обычно быстрее использовать подпрограмму для выполнения работы по прерыванию).

пустота Выполнить(пустота) {    если (Прерывание != INT_NONE) {        Суперпользователь = ПРАВДА;        WriteMemory(++StackPointer, Счетчик команд);        Счетчик команд = InterruptPointer;    }    переключатель (ЧитатьПамять(Счетчик команд++)) {        /*         * Обработка каждой действующей инструкции         * идет сюда ...         */        по умолчанию:        Прерывание = INT_ILLEGAL;    }}

Интерпретаторы очень популярны в качестве компьютерных симуляторов, поскольку их гораздо проще реализовать, чем альтернативные решения, эффективные по времени, а их скорость более чем достаточна для эмуляции компьютеров более чем десятилетней давности на современных машинах. Однако снижение скорости, присущее интерпретации, может быть проблемой при эмуляции компьютеров, скорость процессора которых одинакова. порядок величины в качестве хост-машины[сомнительный ]. Еще несколько лет назад эмуляция в таких ситуациях многими считалась совершенно непрактичной.[сомнительный ].

Что позволило преодолеть это ограничение, так это достижения в динамическая перекомпиляция техники[сомнительный ]. Простой априори преобразование кода эмулируемой программы в код, выполняемый на хост-архитектуре, обычно невозможен по нескольким причинам:

  • код может быть изменен в ОЗУ, даже если он изменен только эмулируемой операционной системой при загрузке кода (например с диска)
  • может не быть способа надежно отличить данные (который не следует переводить) с исполняемый файл код.

Различные формы динамической перекомпиляции, в том числе популярные Компилятор Just In Time (JIT) попробуйте обойти эти проблемы, дождавшись, пока поток управления процессора не перейдет в место, содержащее непереведенный код, и только затем («точно вовремя») преобразует блок кода в код хоста, который может быть выполнен. Переведенный код хранится в код тайник[сомнительный ], и исходный код не теряется и не изменяется; Таким образом, даже сегменты данных могут быть (бессмысленно) переведены рекомпилятором, что приведет лишь к пустой трате времени на перевод. Скорость может быть нежелательной, поскольку некоторые старые игры не разрабатывались с учетом скорости более быстрых компьютеров. Игра, разработанная для ПК 30 МГц с таймером уровня на 300 игровых секунд, может дать игроку только 30 секунд на ПК 300 МГц. Другие программы, такие как некоторые программы DOS, могут даже не работать на более быстрых компьютерах. В частности, при эмуляции компьютеров, которые были "закрытыми", в которых изменения ядра системы не были типичными, программное обеспечение может использовать методы, которые зависят от конкретных характеристик компьютера, на котором оно работает (например, скорости его процессора), и, таким образом, точного управления Скорость эмуляции важна для правильной эмуляции таких приложений.

Ввод / вывод (I / O)

Большинство эмуляторов, как упоминалось ранее, не эмулируют основной системная шина; Таким образом, каждое устройство ввода-вывода часто рассматривается как особый случай, и согласованного интерфейса для виртуальных периферийных устройств не предусмотрено. Это может привести к увеличению производительности, поскольку каждый модуль ввода / вывода может быть адаптирован к характеристикам эмулируемого устройства; конструкции на основе стандартного унифицированного ввода / вывода API могут, однако, конкурировать с такими более простыми моделями, если они хорошо продуманы, и они обладают дополнительным преимуществом "автоматического" предоставления подключаемого модуля, с помощью которого сторонние виртуальные устройства могут использоваться в эмуляторе. Унифицированный API ввода-вывода может не обязательно отражать структуру реальной аппаратной шины: конструкция шины ограничена несколькими электрическими ограничениями и необходимостью в аппаратном обеспечении. параллелизм управление, которое в большинстве случаев можно игнорировать при программной реализации.

Даже в эмуляторах, которые рассматривают каждое устройство как особый случай, обычно существует общая базовая инфраструктура для:

  • управление прерывает с помощью процедуры, которая устанавливает флаги, доступные для чтения симулятору ЦП всякий раз, когда возникает прерывание, позволяя виртуальному ЦП «опрашивать (виртуальные) прерывания»
  • запись и чтение из физической памяти с помощью двух процедур, аналогичных тем, которые имеют дело с логической памятью (хотя, в отличие от последней, первая может часто опускаются, и вместо этого используются прямые ссылки на массив памяти)

Сравнение с симуляцией

Слово «эмулятор» было придумано в 1963 году в IBM.[19] при разработке NPL (IBM System / 360 ) продуктовую линейку, используя "новый сочетание из программного обеспечения, микрокод, и аппаратное обеспечение ".[20]Они обнаружили, что моделирование с использованием дополнительных инструкций, реализованных в микрокод и аппаратное обеспечение, вместо программного моделирования, использующего только стандартные инструкции, для выполнения программ, написанных для более ранних компьютеров IBM, резко увеличило скорость моделирования. Ранее IBM предоставляла тренажеры для, например, 650 на 705.[21] Помимо симуляторов, у IBM были функции совместимости на 709 и 7090,[22] для которого он снабдил компьютер IBM 709 программой для запуска унаследованных программ, написанных для IBM 704 на 709 и позже на IBM 7090. Эта программа использовала инструкции, добавленные функцией совместимости[23] перехватывать инструкции, требующие особого обращения; все остальные инструкции 704 выполнялись на 7090 одинаково. Функция совместимости на 1410[24] требуется только установка тумблера консоли, а не программа поддержки.

В 1963 году, когда микрокод был впервые использован для ускорения этого процесса моделирования, инженеры IBM придумали термин «эмулятор» для описания концепции. В 2000-х годах в контексте программного обеспечения стало обычным употребление слова «подражать». Однако до 1980 года «эмуляция» относилась только к эмуляции с помощью оборудования или микрокода, тогда как «моделирование» относилось к чисто программной эмуляции.[25] Например, компьютер, специально созданный для запуска программ, предназначенных для другой архитектуры, является эмулятором. Напротив, симулятор может быть программой, работающей на ПК, так что на нем можно моделировать старые игры Atari. Пуристы продолжают настаивать на этом различии, но в настоящее время термин «эмуляция» часто означает полную имитацию машины, выполняющей двоичный код, в то время как «моделирование» часто относится к компьютерное моделирование, где компьютерная программа используется для моделирования абстрактной модели. Компьютерное моделирование используется практически во всех областях науки и техники, и компьютерные науки не являются исключением, поскольку в нескольких проектах моделируются абстрактные модели компьютерных систем, например сетевое моделирование, которая практически и семантически отличается от сетевой эмуляции.[26]

Логические симуляторы

Логическое моделирование - это использование компьютерной программы для моделирования работы цифровой схемы, такой как процессор. Это делается после того, как цифровая схема была спроектирована в логических уравнениях, но до того, как схема будет изготовлена ​​аппаратно.

Функциональные тренажеры

Функциональное моделирование - это использование компьютерной программы для моделирования выполнения второй компьютерной программы, написанной на символическом языке. язык ассемблера или компилятор язык, а не в двоичном Машинный код. Используя функциональный симулятор, программисты могут выполнять и отслеживать выбранные участки исходного кода для поиска программных ошибок (ошибок) без генерации двоичного кода. Это отличается от имитации выполнения двоичного кода, то есть программной эмуляции. Первый функциональный симулятор был написан Автонетика около 1960 г. для тестирования программ на языке ассемблера для последующего выполнения на военных компьютерах Д-17Б. Это давало возможность писать, выполнять и тестировать летные программы до того, как было построено компьютерное оборудование D-17B. Autonetics также разработала функциональный симулятор для тестирования программ полета для последующего выполнения на военном компьютере. D-37C.

Приставки для видеоигр

Эмуляторы игровой приставки - это программы, которые позволяют персональному компьютеру или игровой приставке эмулировать другую игровую приставку. Чаще всего они используются для игры в старые видеоигры 1980-х - 2000-х годов на современных персональных компьютерах и более современных игровых консолях. Они также используются для перевода игр на другие языки, для модификации существующих игр и в процессе разработки «домашнего пива». Сделай сам демонстрации и создание новых игр для старых систем. В Интернет помог в распространении эмуляторов консолей, поскольку большинство из них, если не все, были бы недоступны для продажи в розничных точках. Примеры эмуляторов консоли, выпущенных за последние несколько десятилетий: RPCS3, Дельфин, Cemu, PCSX2, ППССП, ЗСНЭС, Citra, ePSXe, Проект64, Visual Boy Advance, Нестопия, и Юзу.

Терминал

Эмуляторы терминалов - это программы, которые предоставляют современным компьютерам и устройствам интерактивный доступ к приложениям, работающим на универсальный компьютер операционные системы или другие хост-системы, такие как HP-UX или OpenVMS. Терминалы, такие как IBM 3270 или VT100 и многие другие, больше не производятся как физические устройства. Вместо этого программное обеспечение, работающее в современных операционных системах, имитирует «тупой» терминал и способно отображать графические и текстовые элементы хост-приложения, отправлять нажатия клавиш и обрабатывать команды с использованием соответствующего протокола терминала. Некоторые приложения эмуляции терминала включают Прикрепите отражение, IBM Personal Communications, и Микро Фокус Румба.

Выдача себя за другое лицо вредоносным ПО

Из-за своей популярности эмуляторы выдавались за вредоносные программы. Большинство из этих эмуляторов предназначены для игровых консолей, таких как Xbox 360, Xbox One, Nintendo 3DS и т. Д. Обычно такие эмуляторы делают невозможные в настоящее время заявления, например, что они могут работать. Xbox One и Xbox 360 игры в единой программе.[27]

Правовые вопросы

См. Статью Эмулятор консоли - юридические вопросы

Соединенные Штаты

Как компьютеры и глобальные компьютерные сети продолжал развиваться, и разработчики эмуляторов становились более квалифицированными в своей работе, промежуток времени между коммерческим выпуском консоли и ее успешной эмуляцией начал сокращаться. Пятое поколение консоли, такие как Nintendo 64, Игровая приставка и шестое поколение карманные компьютеры, такие как Game Boy Advance, заметили значительный прогресс в направлении эмуляции во время их производства.Это привело к тому, что производители консолей попытались остановить неофициальную эмуляцию, но постоянные сбои, такие как Sega против Accolade 977 F.2d 1510 (9 округ 1992 г.), Sony Computer Entertainment, Inc. против Connectix Corporation 203 F.3d 596 (2000) и Sony Computer Entertainment America против Блима 214 F.3d 1022 (2000),[28] имели противоположный эффект. Согласно всем юридическим прецедентам, подражание законно в Соединенных Штатах. Тем не менее, несанкционированное распространение кода, защищенного авторским правом, остается незаконным в соответствии с требованиями обеих стран. Авторские права и международного авторского права в соответствии с Бернская конвенция.[29][нужен лучший источник ] По законам США получение сброшен копия оригинальной машины BIOS является законным в соответствии с постановлением Льюис Галуб Toys, Inc. против Nintendo of America, Inc., 964 F.2d 965 (9-й округ 1992 г.) как добросовестное использование при условии, что пользователь получил законно приобретенную копию устройства. Однако, чтобы смягчить это, несколько эмуляторов для таких платформ, как Game Boy Advance могут работать без файла BIOS, используя высокоуровневую эмуляцию для имитации подпрограмм BIOS с небольшой потерей точности эмуляции.[нужна цитата ]

Смотрите также

Рекомендации

  1. ^ Уорик, Майк (апрель 1988 г.). "Эмуляция MS-DOS для 64-разрядной версии". Вычислить!. п. 43. Получено 10 ноября 2013.
  2. ^ "Что такое эмуляция?". Koninklijke Bibliotheek. Получено 2007-12-11.
  3. ^ ван дер Хувен, Джеффри, Брэм Ломан и Ремко Вердегем. «Эмуляция для цифрового хранения на практике: результаты». Международный журнал цифрового курирования 2.2 (2007): 123-132.
  4. ^ а б Муира, Грегори. «Расширяя границы политики традиционного наследия: поддержание долгосрочного доступа к мультимедийному контенту». Журнал ИФЛА 33 (2007): 323-326.
  5. ^ Ротенберг, Джеффри (1998). ""Критерии идеального решения. «Избегая технологического зыбучих песков: поиск жизнеспособной технической основы для цифрового хранения». Совет по библиотечным и информационным ресурсам. Вашингтон, округ Колумбия. Получено 2008-03-08.
  6. ^ Ротенберг, Джеффри. «Решение для эмуляции». Избегая технологического зыбучих песков: поиск жизнеспособной технической основы для цифрового хранения. Вашингтон, округ Колумбия: Совет по библиотечным и информационным ресурсам, 1998. Совет по библиотечным и информационным ресурсам. 2008. 28 марта 2008 г.http://www.clir.org/pubs/reports/rothenberg/contents.html
  7. ^ Миура, Грегори (2016). «Расширение границ политики в области традиционного наследия: поддержание долгосрочного доступа к мультимедийному контенту». Журнал ИФЛА. 33 (4): 323–6. Дои:10.1177/0340035207086058.
  8. ^ Грейнджер, Стюарт. Цифровое сохранение и эмуляция: от теории к практике. Proc. собрания ichim01, т. 2, 3–7 сентября 2001 г. Милан, Италия. Торонто: Архивы и музейная информатика, Университет Торонто, 2001. 28 марта 2008 г. http://www.leeds.ac.uk/cedars/pubconf/papers/ichim01SG.html В архиве 2009-01-31 на Wayback Machine
  9. ^ Вердегем, Ремко; Ломан, Брэм; Ван дер Хувен, Джеффри (2008). «Эмуляция для цифрового хранения на практике: результаты». Международный журнал цифрового курирования. 2 (2): 123–32. Дои:10.2218 / ijdc.v2i2.35.
  10. ^ Грейнджер, Стюарт. «Эмуляция как стратегия цифрового сохранения». Журнал D-Lib 6.19 (2000). 29 марта 2008 г. http://www.dlib.org/dlib/october00/granger/10granger.html
  11. ^ Ротенберг, Джеффри. «Решение для эмуляции». Избегая технологического зыбучих песков: поиск жизнеспособной технической основы для цифрового хранения. Вашингтон, округ Колумбия: Совет по библиотечным и информационным ресурсам, 1998. Совет по библиотечным и информационным ресурсам. 2008. 28 марта 2008 г.
  12. ^ {{Cite web | url =http://tcrf.net/Pok%C3%A9mon_Black_and_White#Anti-Piracy{{full%7Cdate=September | title = Архивная копия | access-date = 2012-12-30 | archive-url =https://web.archive.org/web/20130606033535/http://tcrf.net/Pok%C3%A9mon_Black_and_White#Anti-Piracy{{full%7Cdate=September | archive-date = 2013-06-06 | url-status = dead}}
  13. ^ "Mega Man Star Force - Этаж монтажной". tcrf.net. Архивировано из оригинал на 2013-05-12. Получено 2012-12-30.
  14. ^ «Отголоски искусства: подражание как стратегия сохранения». Архивировано из оригинал на 2007-10-27. Получено 2007-12-11.
  15. ^ Питер Магнуссон (2004). «Полное моделирование системы: недостающее звено в разработке программного обеспечения».
  16. ^ «Отладка и полное моделирование системы».
  17. ^ Ваня Жолобофф (2009). «Полное системное моделирование встроенных систем» (PDF). Архивировано из оригинал (PDF) на 2014-02-09. Получено 2012-04-22.
  18. ^ GuideStorm. «Эмуляторы PlayStation 4». Получено 2019-08-04.
  19. ^ Пью, Эмерсон В. (1995). Строительство IBM: формирование отрасли и ее технологий. Массачусетский технологический институт. п. 274. ISBN  0-262-16147-8.
  20. ^ Пью, Эмерсон У .; и другие. (1991). Системы IBM 360 и Early 370. Массачусетский технологический институт. ISBN  0-262-16123-0. страницы 160-161
  21. ^ Моделирование IBM 650 на IBM 705
  22. ^ «Архивы IBM: система обработки данных 7090 (продолжение)». www-03.ibm.com. 23 января 2003 г.
  23. ^ «Операции совместимости системы». Справочное руководство IBM 7090 Data Processing System (PDF). Март 1962. С. 65–66. A22-6528-4.
  24. ^ «Операции совместимости системы». Принципы работы IBM 1410 (PDF). Март 1962. С. 56–57, 98–100. A22-0526-3.
  25. ^ Такер, С.Г (1965). «Эмуляция больших систем». Коммуникации ACM. 8 (12): 753–61. Дои:10.1145/365691.365931.
  26. ^ "Сетевое моделирование или эмуляция?". Сетевой мир. Сетевой мир. Получено 22 сентября 2017.
  27. ^ "Имитационная имитация". Лаборатория Malwarebytes. Получено 2016-05-30.
  28. ^ увидеть Midway Manufacturing Co. против Artic International, Inc., 574 F.Supp. 999, aff'd, 704 F.2d 1009 (9th Cir 1982) (содержащая компьютерное ПЗУ Pac Man в качестве достаточной фиксации для целей закона об авторском праве, даже если игра меняется каждый раз, когда вы играете.) И статья 2 Берна. соглашение

внешняя ссылка