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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
08/08/05 21:44
Read: times


 
#99018 - The Trick is:
Responding to: ???'s previous message
Oleg Sergeev said:

In one of projects we have several (about 20) huge subroutines which destroy contents of most registers. Indeed it is possible to push all needed registers to stack at the start of these subroutines and restore registers before return. During optimization we come to low free program memory and looking at the code found that each block of pushing/popping takes about 50 bytes in sum. So they "eats" about 1kb totally.



Thus why the Keil C51 use a complete different approach:

All registers are scratchpad or for parameter passing and thus any function can destroy all registers.

Its the task of the caller, if he need variables later, he must push it or locate in on the direct RAM.


It was also my approach on former assembler days to do many needless PUSH and POP.

And I was very surprised after using C, that most times the code was smaller and faster as my assembler.


Peter


List of 53 messages in thread
TopicAuthorDate
Week puzzle            01/01/70 00:00      
   why is one a subroutine and another a ta            01/01/70 00:00      
      no RTOS            01/01/70 00:00      
   last there was discussion, in this an an            01/01/70 00:00      
      week            01/01/70 00:00      
   Last pushed in - first popped out            01/01/70 00:00      
      come in            01/01/70 00:00      
   Will it work?            01/01/70 00:00      
      Yes it will            01/01/70 00:00      
         Mmmmm?            01/01/70 00:00      
         And another thought            01/01/70 00:00      
            it's perfectly safe...            01/01/70 00:00      
               Still not convinced            01/01/70 00:00      
                  dangers            01/01/70 00:00      
                     Choices            01/01/70 00:00      
                        the same in real life            01/01/70 00:00      
                           Smart and Neat Code            01/01/70 00:00      
                              are you a math major? :)            01/01/70 00:00      
                                 Not a maths major            01/01/70 00:00      
                        yes            01/01/70 00:00      
                  what dangerous            01/01/70 00:00      
                     If misuse is chronic...            01/01/70 00:00      
   CALL + RET != JUMP            01/01/70 00:00      
      ?????????            01/01/70 00:00      
         oops Oleg Has the code to manage it sorr            01/01/70 00:00      
            return address            01/01/70 00:00      
      you got it!            01/01/70 00:00      
         Thanks for the puzzle :-)            01/01/70 00:00      
   a question            01/01/70 00:00      
      why not            01/01/70 00:00      
         well            01/01/70 00:00      
            optimisation            01/01/70 00:00      
               I have seen that happen when the require            01/01/70 00:00      
                  it's the same than if you miss a push or            01/01/70 00:00      
         The Trick is:            01/01/70 00:00      
   the answer            01/01/70 00:00      
      you never answered            01/01/70 00:00      
         solid or intermittent problem            01/01/70 00:00      
            difference between solid or intermittent            01/01/70 00:00      
   Why Push!!!            01/01/70 00:00      
      side effect            01/01/70 00:00      
         Another SAVE_CONTEXT            01/01/70 00:00      
            Sounds like a housekeeping nightmare            01/01/70 00:00      
               Sounds like a housekeeping nightmare            01/01/70 00:00      
               it IS a housekeeping nightmare            01/01/70 00:00      
                  Erik            01/01/70 00:00      
                     Pay no attention            01/01/70 00:00      
                        Donald, if you took the time to read wha            01/01/70 00:00      
                           Reading difficulties            01/01/70 00:00      
                              sorry, used wrong word            01/01/70 00:00      
                     no problem with any post, just with stat            01/01/70 00:00      
            maybe because            01/01/70 00:00      
      eh?            01/01/70 00:00      

Back to Subject List