RE: портатирование на dreamcast
Спасибо, Сват, что такое SDK я знаю. Вопрос в другом. Зачем тогда в большинстве коммерческих приложений под Дримкаст (читай: играх), написанных, ясен пень, на катана (ведь на катана же?), в исходном коде содержится целая куча заголовков, ну например, производитель, или там, дата сборки, используемы кнопки на джойстике... Для кого это еще может быть нужно, как не для некоего "внешнего" окружения, т.е. О.С? Или приложение само себя выполняет и само свои заголовки анализирует?) Зачем ему это нужно. Процессор просто возьмет да и начнет выполнять инструкции одна за другой, из 1ST_READ.bin
Application (1ST_READ.bin)
________
HAL, API, operation system - that's where's the Katana (KOS) supposed to be
________
Hardware (Machine layer)
а так получается что:
somelib.lib harware_code.lib
\ /
\ /
Application
-----------------------------------------------------------
no layer below
Application performs directly by the processor
Первая схема, это как все должно работать при операционке, вторая - как оно почему-то получается.
Т.е. обычно приложение содержит некие вызовы, код которых хранится в операционке, и она либо подгружает нужные файлы с диска, либо лоадит их сразу все в оперативную память.
А так получается что весь нужный код включается путем раннего связывания еще на стадии компиляции, т.е. например идет в программе вызов DrawPixel(x, y, colorstruct&) и оно его код сразу и пихает в .bin. В итоге приложение выростает до немыслимых размеров.
Короче говоря мне интересно знать как все это работает.
В винде например код для всех вызовов (системных API) хранится в dll'ках, т.е. выполняется т.н. позднее связывания, когда нужный код грузится уже на этапе выполнения приложения.
При том есть как бы внешняя среда, portable executable, которая анализирует заголовки виндовского экзешника, и, собственно, создает страничный образ приложения в памяти и запускает его на выполнение.
(Последний раз сообщение было отредактировано 13.03.2011 в 20:33, отредактировал пользователь Rio.)
|