From: Philipp K. K. <pk...@sp...> - 2013-03-27 22:28:07
|
On 27.03.2013 22:28, Masur Jonathan wrote: > Hello, > it really sounds incredible SDCC can do this automatically ! > What if you call a function that itself call a function that will affect > the bank switching ? Can SDCC detect such cases and do all the > bank-switching automatically ? Well, sdcc does not do real interprocedural optimization. So unless the function is inlined, sdcc will assume that the state of BBR is unknown after the call. This could result in a write to BBR that is not necessary (but the function body might be in a different .rel file, so sdcc cannot know if the called function might change BBR; the only safe way is to assume that the state of BBR is unknown after the call). > This really sounds incredible. If SDCC can do all this, it's one more > reason to port it to the 6502 ! > > PS : What about interrupts that touches bank-switching ? You should either not access banked memory in the handler, or put code to save and restore BBR upon interrupts in your crt0.rel. Philipp |