Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
08/22/08 10:40
Read: times


 
#157658 - Revision...
Responding to: ???'s previous message
Sorry, just a clarification...

If you have "func() using 1" then you can indeed call it from another register bank. However, this is not useful because:

(a) The function can't return a value in a register - "unsigned char func() using 1" is illegal, so this is not a general technique.

(b) The overhead of "PUSH PSW, MOV PSW, #XX" at function entry and "POP PSW" at function exit generated due to "using 1" are likely to outweigh any savings of absolute register addressing anyway.

It's when you try to use "#pragma registerbank(X)" to mark a function as using a register bank without generating entry/exit code to explicitly set the register bank, that you start to hit problems with calling function from ISR and also from main.


List of 18 messages in thread
TopicAuthorDate
Keil C51 Compiler Bug            01/01/70 00:00      
   version?            01/01/70 00:00      
      Version            01/01/70 00:00      
   This is what Keil does            01/01/70 00:00      
      not if you follow thw rules            01/01/70 00:00      
         And also call from elsewhere?            01/01/70 00:00      
            Revision...            01/01/70 00:00      
         Using 2            01/01/70 00:00      
            did you have using 2 in the function header ?            01/01/70 00:00      
               Using 2            01/01/70 00:00      
                  correct cde ----            01/01/70 00:00      
                     Using 2            01/01/70 00:00      
                        people like it working            01/01/70 00:00      
                           Eee PC?            01/01/70 00:00      
                           HiTech vs Keil            01/01/70 00:00      
                              yes            01/01/70 00:00      
                           OCG C compiler for 8051            01/01/70 00:00      
                     incorrect code in a different place?            01/01/70 00:00      

Back to Subject List