On Wed, Mar 11, 2015 at 4:41 PM, <paul_kon...@dell.com> wrote: > >> On Mar 11, 2015, at 7:19 PM, Ian Lance Taylor <i...@google.com> wrote: >> >> 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. > > It certainly would. It’s not all that common, but I have seen this done in > production code. Come to think of it, this certainly makes sense in machines > where some instructions act on fixed registers. > > Register names would be nice as an additional capability.
Register names are supported. Ian