Содержание

PSX-EXE

Формат загрузочного образа (исполняемого файла) PlayStation.

Заголовок (2048 байт)

Начиная со смещения 0x04C обычно идет маркер региона:

BIOS игнорирует эти строки, поэтому их можно не заполнять.

Заголовок образа должен находиться в верхней части BIOS-сегмента памяти. Код программы (начиная с секции .text) может быть загружен в любой адрес в свободной памяти, но обычно идет сразу после BIOS, т.е. по адресу 0x80010000 (0x80000000 + 64K).

Данные (выровнены по 2048 байт)

Начиная с 0x800 идет машинный код (+ инициализированные данные) программы.

Типовая схема памяти при загрузке образа:

RAM_BASE    = 0x80000000
RAM_SIZE    = 2M
BIOS_SIZE   = 64K
HEADER_SIZE = 2K
LOAD_ADDR   = RAM_BASE + BIOS_SIZE
HEADER      = LOAD_ADDR - HEADER_SIZE
RAM         = LOAD_ADDR
RAM_LENGTH  = RAM_SIZE - BIOS_SIZE
STACK_INIT  = RAM_BASE + 0x001FFF00;

Можно заметить, что между началом стека и концом памяти остается запас в 256 байт (0x80200000 - 0x801FFF00 = 0x100). Для чего он нужен, точно не известно - возможно, тоже какой-то резерв для BIOS.