Mixing C with Assembler: Assembly code before push instructions in a function

Yes, and yes. I plan on taking advantage of this:

Register r0 may be freely used by your assembler code and need not be restored at the end of your code. It's a good idea to use tmp_reg ... instead of r0 or r1, just in case a new compiler version changes the register usage definitions.