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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
11/06/08 07:49
Read: times


 
#159816 - I now see the point with Keil...
Responding to: ???'s previous message
... thanks for the explanation to all.

I would feel this as an annoying limitation, if I would use Keil. I understand, that the compiler makers want to sell the illusion that the compiler solves all the problems a developer can have, but they must also understand, that the power users will wish to have full control over their product, including hand-optimised parts where appropriate. I see that there is a kludge how to work around the problem (putting the asm part to a separate file), but still an unnecessary annoyance.

So, I would put down the following as basic guidelines for those who wish to do asm in C on '51:

1. RTFM. Keywords, syntax etc. are compiler/assembler dependent. There is most probably a "howto add asm" section in your manual.

2. Don't attempt to insert a piece of asm in between C statements, unless you know for 100% the internals of the compiler (which is possible only in open-source compilers), or if the compiler maker assures you this is OK (which is never). The compiler makes things which you would find surprising. Don't assume from a casual inspection of a compiled code that the compiler will follow the same pattern next time you compile.

3. Rather, write pure asm functions. RTFM for how to do that, and for the convention in your compiler, what resources (registers) is your asm function supposed to preserve and how are the parameters passed.

4. Specifically for Keil, put all asm functions to a separate file, only to be added to the project via linking.

Please comment.

JW

List of 48 messages in thread
TopicAuthorDate
Asm and C            01/01/70 00:00      
   Depends!            01/01/70 00:00      
      Also            01/01/70 00:00      
         No! Not Inline!!            01/01/70 00:00      
            why not inline?            01/01/70 00:00      
               I agree with Andy (at least for Keil), but ....            01/01/70 00:00      
                  Keil specifically            01/01/70 00:00      
                     Keil and reasoning            01/01/70 00:00      
                        Jan...Take it from experience...            01/01/70 00:00      
                           can you please explain?            01/01/70 00:00      
                              Example??            01/01/70 00:00      
                                 I am curious            01/01/70 00:00      
                              Use these references in lieu of examples:            01/01/70 00:00      
                              I explained it earlier; example here            01/01/70 00:00      
                                 I now see the point with Keil...            01/01/70 00:00      
                                    Often intrinsic use of inline assembler            01/01/70 00:00      
                                       Not a safe assumption?            01/01/70 00:00      
                                          No, extrapolation not allowed            01/01/70 00:00      
                                          but if it is a macro...            01/01/70 00:00      
                                             A limited example            01/01/70 00:00      
                                                an opinion            01/01/70 00:00      
                     Keil specifically - more            01/01/70 00:00      
               Why Not inline C            01/01/70 00:00      
               Inline assembler - Avoid! Avoid!!            01/01/70 00:00      
                  in order to keep things together            01/01/70 00:00      
                     I do            01/01/70 00:00      
                        from where I sit...            01/01/70 00:00      
                           you said it            01/01/70 00:00      
                              this has nothing to do with it            01/01/70 00:00      
                                 asm *functions* embedded in C-majority source file            01/01/70 00:00      
                                 Whay Not???            01/01/70 00:00      
                                    My view point on ASM in C            01/01/70 00:00      
                                       That is the point            01/01/70 00:00      
                                 here is one - at least re Keil            01/01/70 00:00      
                     Maybe not here, but...            01/01/70 00:00      
            I do not disagree            01/01/70 00:00      
   Compiler ?            01/01/70 00:00      
      Get the manual when/where you get the compiler            01/01/70 00:00      
   and C in asm ?            01/01/70 00:00      
      C first?            01/01/70 00:00      
         not used to call compiler generated asm so translate by hand            01/01/70 00:00      
      if a compiler can do it            01/01/70 00:00      
      depends on the compiler            01/01/70 00:00      
         SDCC...            01/01/70 00:00      
            What assembler?            01/01/70 00:00      
               SB-asm            01/01/70 00:00      
                  In principle this should work.            01/01/70 00:00      
                  OTOH, why not simply write in ASM?            01/01/70 00:00      

Back to Subject List