> > On Thu, Nov 01, 2001 at 02:54:37PM -0700, John Regehr wrote: > > > > Don't forget to make sure it's __volatile__, elsewise this is the very > > > > epitome of what would produce dodgy results... > > > > > > Right. So method2 and method2A seem to be broken in multiple ways - > > > forget you ever saw them. Rather, look at this page: > > in what way is method2 brocken ?? > > if you compile method1 and method2A and look at the assembler coee they are > absolutly the same - the only difference on the source level is that its easier > to read "mov" than "0x31" thats all. > > ---method1--- > __inline__ unsigned long long int rdtsc(void) > { > unsigned long long int x; > __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x)); > return x; > } > > > ---method2A--- > __inline__ unsigned long long int hwtime(void) > { > unsigned long long int x; > __asm__("rdtsc\n\t" > "mov %%edx, %%ecx\n\t" > :"=A" (x)); > return x; > } >
forgot to put in objdump output in the last post 08048430 <rdtsc>: 8048430: 55 push %ebp 8048431: 89 e5 mov %esp,%ebp 8048433: 83 ec 14 sub $0x14,%esp 8048436: 53 push %ebx 8048437: 0f 31 rdtsc 8048439: 89 c1 mov %eax,%ecx 804843b: 89 d3 mov %edx,%ebx 804843d: 89 4d f8 mov %ecx,0xfffffff8(%ebp) 8048440: 89 5d fc mov %ebx,0xfffffffc(%ebp) 8048443: 8b 4d f8 mov 0xfffffff8(%ebp),%ecx 8048446: 8b 5d fc mov 0xfffffffc(%ebp),%ebx 8048449: 89 c8 mov %ecx,%eax 804844b: 89 da mov %ebx,%edx 804844d: eb 01 jmp 8048450 <rdtsc+0x20> 804844f: 90 nop 8048450: 8b 5d e8 mov 0xffffffe8(%ebp),%ebx 8048453: 89 ec mov %ebp,%esp 8048455: 5d pop %ebp 8048456: c3 ret 8048457: 89 f6 mov %esi,%esi 8048459: 8d bc 27 00 00 00 00 lea 0x0(%edi,1),%edi 08048460 <hwtime>: 8048460: 55 push %ebp 8048461: 89 e5 mov %esp,%ebp 8048463: 83 ec 14 sub $0x14,%esp 8048466: 53 push %ebx 8048467: 0f 31 rdtsc 8048469: 89 d1 mov %edx,%ecx 804846b: 89 c1 mov %eax,%ecx 804846d: 89 d3 mov %edx,%ebx 804846f: 89 4d f8 mov %ecx,0xfffffff8(%ebp) 8048472: 89 5d fc mov %ebx,0xfffffffc(%ebp) 8048475: 8b 4d f8 mov 0xfffffff8(%ebp),%ecx 8048478: 8b 5d fc mov 0xfffffffc(%ebp),%ebx 804847b: 89 c8 mov %ecx,%eax 804847d: 89 da mov %ebx,%edx 804847f: eb 00 jmp 8048481 <hwtime+0x21> 8048481: 8b 5d e8 mov 0xffffffe8(%ebp),%ebx 8048484: 89 ec mov %ebp,%esp 8048486: 5d pop %ebp 8048487: c3 ret 8048488: 90 nop 8048489: 8d b4 26 00 00 00 00 lea 0x0(%esi,1),%esi -- [rtl] --- To unsubscribe: echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED] -- For more information on Real-Time Linux see: http://www.rtlinux.org/