我想构建一个支持编译到SNES 65c816的LLVM,但是SNES ROM是非常专门地内置在库中的。对于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,由于每个存储区中都有0x8000字节的程序代码/数据,因此构建了512 KiB ROM。
我认为LoROM的区别可以在LLVM三元组(65c816-nintendo-snes-lorom
)中处理,但是那我该如何处理将代码放置在正确的位置呢?
还是不是LLVM后端的工作,开发人员的构建应该是LLVM处理然后由开发人员组装的16个源代码文件?
如果要组装开发人员的工作,那么如何从另一银行调用一个银行中的某些代码段?如果某个已编译的存储区大于0x8000字节会怎样?