问题标签 [game-boy-advance]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - (Game Boy Advance) 程序从 0x00000000 而不是 0x08000000 开始。如何告诉 gcc 编译到特定地址?
我让 DevKitPro 在 Game Boy Advance 上工作,但我遇到了一些问题。我看到的最大的一个是我的代码是在0x00000000
而不是普通0x08000000
的 ROM 盒式磁带上组装的。我的理解是 C 编译器不使用.org
指令在指定的内存位置创建代码;而是链接器应该为我处理所有这些。但它似乎将代码放在“错误”的地址。游戏会正常运行,但我想这是因为它在模拟器上运行,而模拟器不在乎它是否位于不应该出现的位置。如何让代码“组装”在0x08000000
?
我对makefile、编译器、链接器等概念不熟悉,所以我可能把所有东西都设置得很糟糕。我将展示我的 makefile、运行 makefile 的批处理脚本以及正在编译的 C 代码。我还包括了 objdump 以防万一。
C代码:
批处理脚本:
生成文件:
对象转储的输出:
编辑:这里要求的是批处理文件的输出:
arrays - 错误:在 '.' 之前应有 '='、','、';'、'asm' 或 '__attribute__' 令牌
我正在尝试在 C 中为 Game Boy Advance 创建一个 1bpp 位图字体,本质上我想创建一个由 (ASCII CODE - 32)*8 索引的连续 ROM 数据区域。到目前为止,我收到了我不明白的错误消息。
错误:
导致错误的源代码(最小可重现示例):
据我所知,我在行尾没有遗漏任何分号,所以我不明白为什么我什至需要列出的字符。这就是你在数组中定义每个结构的方式,不是吗?有这样的点?这就是我看到的所有示例所显示的,但我得到了这个错误。
编辑:将所有内容移入 main 会给我一个不同的错误:
这个我也看不懂