Jump to content

Эмулятор Mac 68k

(Перенаправлено из эмулятора Mac 68K )

Эмулятор Mac 68k [1] — это программный эмулятор, встроенный во все версии классической Mac OS для PowerPC . Этот эмулятор позволял запускать приложения и системный код, которые изначально были написаны для 680x0 на базе моделей Macintosh . За некоторыми исключениями, в частности RAM Doubler от Connectix , эмулятор запускал все программное обеспечение без каких-либо заметных последствий, кроме более низкой производительности по сравнению с той же программой, скомпилированной для PowerPC.

Происхождение

[ редактировать ]

Первая версия была написана Гэри Дэвидианом, который первоначально создал ее для использования на процессоре Motorola 88000 , который использовался в Apple неудачной первой попытке создать целевую платформу RISC . [2] [3] Более поздняя версия, использующая динамическую перекомпиляцию , была разработана Эриком Траутом , который позже работал над успешными проектами эмуляции в Connectix, такими как Virtual Game Station и Virtual PC . До прихода туда Траута компания Connectix выпустила Speed ​​Doubler , который включал ещё более быстрый эмулятор PowerPC 68k.

Выполнение

[ редактировать ]

Все версии этого эмулятора эмулировали «пользовательское» подмножество 68EC040 набора инструкций с кадром стека исключений 68020/68030 . В документах разработчика Apple указано, что эмулятор обеспечивал операционную среду, максимально напоминающую операционную среду Macintosh Centris 610 — системы, основанной на микропроцессоре Motorola 68LC040 . [4] Ранние версии имитировали его, декодируя каждую инструкцию и немедленно выполняя серию эквивалентных инструкций PowerPC. Для PCI PowerMac динамической перекомпиляции для повышения производительности использовался эмулятор . Динамическая перекомпиляция работает путем «перекомпиляции» общих разделов кода в более быстрые, собственные для PowerPC последовательности, которые были локально кэшированы. Эмулятор мог распознать ту же последовательность кода 680x0 и запустить ранее кэшированный код PowerPC, чтобы избежать повторного перевода. Этот эмулятор теоретически был способен эмулировать код 680x0 быстрее, чем любой реальный 680x0 мог его запустить. В 68LC040 не было инструкций с плавающей запятой, что делало эту задачу немного проще, но не менее впечатляюще.

Одна из причин такого успеха этой эмуляции заключается в том, что многие API-интерфейсы Mac OS изначально были реализованы как ловушки на процессоре 680x0; следовательно, вызов API фактически распознавался 680x0 как эквивалент состояния ошибки, что заставляло его обрабатывать эту ошибку через один из своих аппаратных векторов. В свою очередь, этот вектор будет искать и запускать процедуры операционной системы из ПЗУ или ОЗУ. В эмуляторе такие ловушки можно было заменить собственным кодом PowerPC, поэтому единственным эмулируемым кодом было само приложение, а любой вызываемый им системный API можно было ускорить с помощью собственного кода PowerPC. Это также дало Apple время для переноса ОС на PowerPC. Сначала в машинном коде были переписаны только критичные по времени аспекты, оставив большую часть ОС эмулированной. Постепенно большая часть ОС была переписана как родная, поэтому со временем ОС стала быстрее.

Для программиста переход на PowerPC прошел достаточно безболезненно, поскольку эмулятор запускался и останавливался автоматически. Это было достигнуто с помощью нового типа указателя, называемого универсальным указателем процедур (UPP). Для кода 68k этот указатель выглядит как обычный указатель на код и может использоваться как таковой. Однако на самом деле это привело к созданию структуры данных, которая содержала специальную инструкцию-ловушку и флаги, указывающие архитектуру набора команд (ISA) вызываемого кода. Из кода PowerPC этот UPP можно передать в функцию CallUniversalProc() для его вызова. Затем эмулятор 68k занимался такими деталями, как представление переданных параметров в правильном порядке для рассматриваемой ISA, а также запуск и остановка эмулятора по мере необходимости. Компиляторы для Mac OS автоматически создавали такие UPP при использовании соответствующих макросов , а системные библиотеки PowerPC содержали собственные заглушки для прозрачного вызова собственных функций или функций Still-68k по мере необходимости. Это означало, что работа с двойной архитектурой требовала от программиста очень мало усилий, и, как и в случае с ОС, сами приложения могли довольно легко смешивать и сопоставлять код 680x0 и PowerPC.

Текущий статус

[ редактировать ]

Поскольку он был встроен во все версии PowerPC классической Mac OS , эмулятор также был частью классической среды Mac OS X. Поэтому эмуляторы PowerPC Macintosh, такие как SheepShaver, также используют эмулятор при работе с классической Mac OS. В родной Mac OS X за пределами Classic эмулятор никогда не использовался.

См. также

[ редактировать ]
  1. ^ «PowerBook: Информация о ROM-in-RAM» . Поддержка Apple . 20 февраля 2012 г.
  2. ^ «Триумф PowerPC» . Проверено 1 июля 2011 г.
  3. ^ «Мощные вычисления: борьба за Mac или кража клиентов Apple?» . Бюджетный Mac . Архивировано из оригинала 26 марта 2012 года . Проверено 1 июля 2011 г.
  4. ^ «Эмулятор 68LC040 (IM: PS)» . Разработчик Apple . 3 июля 1996 года . Проверено 1 июля 2011 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5845f4b18bf6edab01a25903d1c4bb2c__1630404600
URL1:https://arc.ask3.ru/arc/aa/58/2c/5845f4b18bf6edab01a25903d1c4bb2c.html
Заголовок, (Title) документа по адресу, URL1:
Mac 68k emulator - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)