I generally fiddle about with the C and then check the generated assembly, if theres anything glaringly inefficient I rework the C - its portable, readable, maintainable etc etc etc.
If you don't use it already, you can use objdump to see the assembly generated from your C -
If anything it shows you that assembly is a bit repetitive - load from register (LDS), do something, store back in register (STS) and repeat.
Duane B