avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-gcc-list] In-line Assembler Code


From: Erik Christiansen
Subject: Re: [avr-gcc-list] In-line Assembler Code
Date: Wed, 18 Mar 2015 18:07:41 +1100
User-agent: Mutt/1.5.21+145 (2a1c5d3dd72e) (2012-12-30)

On 07.03.15 17:07, Alistair Gadd wrote:
> I'm used to using separate assembler files and I'm not a great boffin
> on using in-line assembly, but I really think I need to get a collar
> on it.

Alistair, is there any reason for not using separate assembler files, as
is your custom? As clock_prescale_set() is entirely assembler, it is
ripe for linking in from a separate assembler source file, either put
through the assembler only, or avr-gcc, as preferred.

In the latest makefile I wrote for use on avr, I find I'm using:

%.o: %.c 
   $(CC) -c $(CFLAGS) -o $(OBJDIR)/$@ $<

%.o: %.s 
   $(AS) -I$(INC_DIR) $(ASFLAGS) -o $(OBJDIR)/$@ $<

%.o: %.S 
   $(CC) -c -I$(INC_DIR) -x assembler-with-cpp $(CFLAGS) 
-Wa,-alms=$(OBJDIR)/address@hidden -o $(OBJDIR)/$@ $<

I.e. xxx.S goes through cpp, so lots of good macros are expanded.

If register allocation is a doubt, the ABI is documented here:
http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reg_usage

I would certainly never use in-line assembler for anything other than a
desperate hack of a large C function which couldn't be fixed any other
way. In-line assembler is unreadable gibberish, and not an efficient or
adequately maintainable method for writing a complete function, IME.

Given that linking file(s) of assembler function(s) into a C program is
quite elementary, it should hardly ever be necessary to use in-line
assembler. (And in a 30 year embedded systems design/programming career,
I never found it useful to do so.)

Erik

-- 
The world is spending half a trillion dollars on fossil fuel subsidies every
year, according to a new report. The Overseas Development Institute (ODI) says
rich countries are spending seven times more supporting coal, oil and gas than
they are on helping poorer nations fight climate change.
- http://www.bbc.co.uk/news/science-environment-24833153



reply via email to

[Prev in Thread] Current Thread [Next in Thread]