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