'A' constraint's behavior not compliant with doc under x86-64
Zuxy Meng
zuxy.meng@gmail.com
Wed Feb 17 14:26:00 GMT 2010
Hi,
According to "info gcc", the 'A' constraint denotes the `a' and `d'
registers, as a pair (for instructions that return half the result in
one and half in the other). However, in reality 'A' is treated simply as
a 64-bit long integer in %rax under x86-64. For example, the following
code piece:
#include <stdint.h>
uint64_t rdtsc(void)
{
uint64_t ret;
asm ("rdtsc":"=A"(ret));
return ret;
}
produces:
[zuxy@Rainbow31 bin]$ objdump -d a.o
a.o: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <rdtsc>:
0: 0f 31 rdtsc
2: c3 retq
I'm using GCC 4.4.3 but I doubt the problem has been there since Day One.
--
Zuxy
More information about the Gcc-help
mailing list