On Wed, Mar 11, 2015 at 3:58 PM, David Wohlferd <d...@limegreensocks.com> wrote:
>
> Why does gcc allow you to specify clobbers using numbers:
>
>    asm ("" : : "r" (var) : "0"); // i386: clobbers eax
>
> How is this better than using register names?
>
> This makes even less sense when you realize that (apparently) the indices of
> registers aren't fixed.  Which means there is no way to know which register
> you have clobbered in order to use it in the template.
>
> Having just seen someone trying (unsuccessfully) to use this, it seems like
> there is no practical way you can.
>
> Which makes me wonder why it's there.  And whether it still should be.

I don't know why it works.  It should be consistent, though.  It's
simply GCC's internal hard register number, which doesn't normally
change.

I would agree that one should avoid it.  I'd be wary of removing it
from GCC at this point since it might break working code.

Ian

Reply via email to