This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: Clobbered registers
Facundo Ciccioli writes:
> I wrote a function which modifies esp register through some asm
> instructions (it pushes things to the stack). Everything works perfect
> for now because the function takes care of restauring the content of
> esp issuing an add instruction too so that it can return allright.
Right. Good. asms shouldn't clobber SP. SP is controlled by the
compiler.
> But reading GCC docs I found this:
>
> "If you refer to a particular hardware register from the assembler
> code, you will probably have to list the register after the third
> colon to tell the compiler the register's value is modified."
>
> Ok, so I do that. But looking at the assembler code generated by the
> compiler I notice that it is exactly the same than before I did what
> the docs say. So I wonder, why does the compiler needs to know if I
> execute an instruction that modifies some register? And also (maybe
> the answer to the former would respond this) why does the code doesn't
> change?
If you use a specific hardware register, say R7, then you need to tell
the compiler you have done so, so that the compiler doesn't use that
register to store a temporary.
Andrew.