Считать значение регистра в переменную с помощью одной команды asm

Как я могу прочитать значение регистра в переменную с помощью одной встроенной команды ассемблера? Я использую gcc в старой системе freeBSD (v2.1 i386).

У меня есть такой код:

static volatile unsigned long r_eax, r_ebx;
asm ("movl %%eax, %0\n" :"=r"(r_eax));
asm ("movl %%ebx, %0\n" :"=r"(r_ebx));

В результате я получаю следующее:

mov    %eax,%eax
mov    %eax,0x1944b8
mov    0x1944b8,%eax
mov    %ebx,%eax
mov    %eax,0x1944bc
mov    0x1944bc,%eax

Но мне нужно только:

mov    %eax,0x1944b8
mov    %ebx,0x1944bc

Как я могу достичь этого результата?

5
задан asmodan 18 February 2011 в 10:30
поделиться