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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
02/21/07 23:13
Read: times


 
#133474 - Huge code != huge time
Responding to: ???'s previous message
Erik Malund said:
Shated() is huge and the latency variation will kill you

A huge function (code size wise) does not have to take a long time to execute. Shared() could be a state machine that handles 50 different states, but each time throught it might only execute a small subsection of the total code.

Erik Malund said:
BTW NOAREGS will no be sufficient, REENTRANT would be required as well unless the even more dangerous "avoiding it being called from the ISR when main is using it" is implemented.

How can ensuring proper synchronisation be "dangerous"? If you don't properly plan which sections of code can be interrupted and which can't then even REENTRANT on everything will not save you, because these functions are likely manipulating internal state or external hardware which will then get corrupted with REENTRANT or not.

Erik Malund said:
Stating a point in an exaggerated fashion: "if making two routines instead of one allow me to skip an if, I will make two routines"

I say: "if a compiler optimisation can cause buggy code to be created, and the only way to prevent this is a detailed manual analysis of the global call tree, then I turn that optimisation off".

If I decided that I wanted to use absolute register addressing, I think I would have to "decorate" every single one of my function names (eg Shared_RB0), and have an automated tool that scans the MAP file to make sure that I didn't call across register banks. Currently this is too much of a PITA for the gain that would be achieved.

Also interestingly I don't believe that Keil library functions (although I rarely use them) can make use of absolute register addressing either, because they don't know which bank is active when they are called.

Erik Malund said:
but why single out Keil for what is the fact for ALL compilers

I don't mean to "single out" Keil, but I have no experience with the other compilers so I can't comment on them. And Keil costs big $$$, so I expect a good result. Keil have (for example) a "global register coloring" optimisation, but yet it can't optimise the simple sequence we are discussing? What's with that?



List of 68 messages in thread
TopicAuthorDate
Speed Recommendation            01/01/70 00:00      
   Time for processing            01/01/70 00:00      
   Get a 1X Chip            01/01/70 00:00      
      another 485 issue            01/01/70 00:00      
         slightly less            01/01/70 00:00      
            who gives a hoot            01/01/70 00:00      
               maybe yes, maybe not...            01/01/70 00:00      
   Choose the appropriate tool!            01/01/70 00:00      
      Don't have much of a choice!            01/01/70 00:00      
         drop the "coding standards"            01/01/70 00:00      
         Yikes.            01/01/70 00:00      
            down memory lane            01/01/70 00:00      
               a possible compromise...            01/01/70 00:00      
                  Well...            01/01/70 00:00      
               The other end of the spectrum ...            01/01/70 00:00      
                  afer quite a few iterations....            01/01/70 00:00      
                     The guide to writing unmaintainable code says:            01/01/70 00:00      
         That's the kind of nonsense...            01/01/70 00:00      
   put some load on the hardware            01/01/70 00:00      
      Jan, oh Jan            01/01/70 00:00      
      9-bit - more work for the hardware!            01/01/70 00:00      
         true, but...            01/01/70 00:00      
            It is...            01/01/70 00:00      
               calculate the ISR after making the ISR skip            01/01/70 00:00      
   Optimizing C            01/01/70 00:00      
      just one example            01/01/70 00:00      
         The advantage is...            01/01/70 00:00      
            If the thinking had preceded the coding ...            01/01/70 00:00      
               you miss the point            01/01/70 00:00      
                  then what's the chance of having him to C-craft?            01/01/70 00:00      
                     zero            01/01/70 00:00      
                     Job security, of course.            01/01/70 00:00      
      Examples are not equivalent            01/01/70 00:00      
         Wasn\'t saying that they were.            01/01/70 00:00      
            I just tried SDCC...            01/01/70 00:00      
               Hm, can you post the assembly output ?            01/01/70 00:00      
                  Keil does this            01/01/70 00:00      
                     Interesting.            01/01/70 00:00      
                     Optimizing and Keil/SDCC/Raisonance            01/01/70 00:00      
                        Retort            01/01/70 00:00      
                           Register Banks...            01/01/70 00:00      
                              benchmarks            01/01/70 00:00      
                              tools differ            01/01/70 00:00      
                              Clarification            01/01/70 00:00      
                                 comments            01/01/70 00:00      
                                    not to write things twice            01/01/70 00:00      
                                       no need            01/01/70 00:00      
                                          And how does this produce two incarnations?            01/01/70 00:00      
                                             like this            01/01/70 00:00      
                                                hehe            01/01/70 00:00      
                                                   this is no better confusion-wise            01/01/70 00:00      
                                                      what is "efficient"            01/01/70 00:00      
                                                         ok is \'safe\' better?            01/01/70 00:00      
                                                            How to convey our ideas to the mcu?            01/01/70 00:00      
                                                               Carefull now, you could end with Prolog :)            01/01/70 00:00      
                                                                  my kids            01/01/70 00:00      
                                                            Huge code != huge time            01/01/70 00:00      
                                                               This comes under the heading of "famous last words            01/01/70 00:00      
                        the question I always raise on this            01/01/70 00:00      
                           Here's Why...            01/01/70 00:00      
                  SDCC            01/01/70 00:00      
                     Thanks. Also interesting.            01/01/70 00:00      
                     SDCC peephole optimiser conflict            01/01/70 00:00      
                  Raisonance            01/01/70 00:00      
   help me ,I NEED SOME HELP ON MY PROJECT            01/01/70 00:00      
      that is NOT 'help'            01/01/70 00:00      
      Well that is not the way to get it!            01/01/70 00:00      
      start a new thread!            01/01/70 00:00      

Back to Subject List