Я хочу создать LLVM Backed для компиляции в SNES 65c816, однако ПЗУ SNES специально разработано для банков. Для LoROM есть 16 банков, и для каждого банка код программы начинается с $0?8000
, где ?
- шестнадцатеричная цифра банка. В asar ASM каждый файл ASM для каждого банка начинается с ORG $0?8000
, а затем все объединяются как
LOROM
incsrc bank_00.asm
incsrc bank_01.asm
incsrc bank_02.asm
incsrc bank_03.asm
; ...
Для LoROM создается ПЗУ объемом 512 КБ, поскольку в каждом банке содержится 0x8000 байт программного кода / данных.
Я полагал, что различие LoROM можно обрабатывать в тройке LLVM (65c816-nintendo-snes-lorom
), но как мне тогда разместить код в нужном месте?
Или это не работа бэкэнда LLVM, и сборка разработчика должна состоять из 16 файлов исходного кода, которые LLVM обрабатывает, а затем собирает разработчик?
Если работа разработчика заключается в сборке, как можно будет вызывать определенные фрагменты кода в одном банке из другого банка? Что происходит, если размер определенного скомпилированного банка превышает 0x8000 байт?