请问strongchen 我用d64可以用banked模式的么
- UID
- 148218
- 性别
- 男
|
请问strongchen 我用d64可以用banked模式的么
我用的是d64片子,用的small模式。程序已经超过16k,提示out of allocation space in segment ROM_C000 ad address 0xFEFE 错误。
我按你说的用#pragma CODE_SEG OTHER_ROM放在子程序前,可是进去后,单步调试不了,但全速是可以的。
而我用banked模式既没有提示错误也可以单步调试,
请问我可以用banked模式的么,它们两者有什么关系啊。请指教,不胜感激。
|
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
small模式和banked模式的主要区别是,在small模式下调用子程序或函数时,不会对PPAGE寄存器进行操作,而在banked模式下,就会采用包含PPAGE操作的指令。其实它们没有太大的区别。你说的现象很奇怪。如果愿意,你可以将project打包贴出来,或发到我的信箱:strongchen_free@yahoo.com.cn。 |
|
|
|
|
|
- UID
- 148218
- 性别
- 男
|
|
|
|
|
|
- UID
- 148218
- 性别
- 男
|
strongchen 我们可以qq聊的么,如果你不忙的话加我40478183 |
|
|
|
|
|
- UID
- 148218
- 性别
- 男
|
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
我已经看过你的程序了。当程序超过16K,即一页的空间,需要换页,而又不想对每个函数都申明其页时,最简单的方法就是采用banked的模式。如果一定要用small模式,就必须在放入OTHER_ROM的程序前加一个申明:
#pragma CODE_SEG __PPAGE_SEG OTHER_ROM
这样编译器就会自动加入PPAGE的操作指令。
另外,此时必须将main函数放入DEFAULT,即3F页,因为Startup代码是放入这一页的,而Startup前并没有__PPAGE_SEG的申明,所以不会加PPAGE的操作指令,此时从Startup程序跳转至main时就会出问题。
总的来说,如果用Banked方式,就没有问题了。
另外我把两种模式的project都发给你了,供你参考。 |
|
|
|
|
|
- UID
- 148218
- 性别
- 男
|
谢谢老大,终于明白了,可以用的了
可你给我发的我好象没有收到,不过已经明白了我自己来搞定了 |
|
|
|
|
|