Моя цель - создать эмулятор для мобильного игрового устройства под Symbian OS 9 под названием N-Gage. К сожалению, выполнение исполняемых файлов устройства (Symbian) кажется более сложным, чем я думал.Выполнение скриптов из Symbian с отсутствием точки входа
Во-первых, некоторые справочные данные. Устройство основано на процессоре ARM920T, который основан на архитектуре ARMv4T. Игры, сделанные для системы, предоставляются в виде DLL, которые находятся в стандартном формате pre-Symbian 9. .app. SDK для N-Gage основан на первом выпуске Symbian S60 SDK.
В то время как некоторые игры выполнять некоторые другие разные инструкции, прежде чем, я бы сначала хотел взглянуть на первые 3 «стандартные» инструкции каждого исполняемого файла, который, кажется, всегда были сформированы:
7C: B 0x1234 // The location of the branch can be anywhere
...
1234: MOV R0, #0
1238: BX LR
Все библиотеки DLL также имеют 2 экспорта: основную запись (показана выше) и другой экспорт в случайной точке кода.
Первые инструкции пара и другие обстоятельства него есть привести меня в замешательство:
- Почему игра будет DLL вместо фактического исполняемого файла?
- Как загрузить данную DLL для выполнения системой?
- Какова будет фактическая точка входа в DLL, если она имеет только 2 экспорта, упомянутых выше?
- Какова будет ценность LR при исполнении, если предполагается, что вызывается главная точка входа?
«Разработка программного обеспечения для ОС Symbian» утверждает, что до Symbian 9 было распространено применение приложений в виде файлов DLL, которые будут загружены системным приложением 'apprun.exe'. – Michael
Если у второго экспорта нет общего имени, то я предполагаю, что имя будет указано как точка входа в игру где-то в другом месте, например, в базе данных установленных приложений. Значение в LR, по-видимому, является обратным адресом функции, называемой основной записью, которая обычно является самой ОС, если это точка входа в DLL. Я предполагаю, что точка входа работает как DLLMain Windows, и поэтому часто не нужно ничего делать. (Хотя Windows DLL вернет TRUE, а не 0 (FALSE)). –
Майкл и Росс, спасибо вам большое! Ты привел меня на правильный путь. Я выяснил ответ и сам отправил ответ, который отвечает на мои собственные вопросы. – tambre