Внутреннее сомнение ASM

Я пытаюсь понять некоторые вещи о встроенном ассемблере в Linux. Я использую следующую функцию:

void test_func(Word32 *var){
   asm( " addl %0, %%eax" : : "m"(var) );
   return;
}

Она генерирует следующий код ассемблера:

.globl test_func
.type   test_func, @function
test_func:
        pushl %ebp
        movl %esp, %ebp
#APP
# 336 "opers.c" 1
        addl 8(%ebp), %eax
# 0 "" 2
#NO_APP
        popl %ebp
        ret
        .size   test_func, .-test_func

Она суммирует адрес var mem со значением регистра eax вместо значения var.

Есть ли способ указать инструкции addl использовать значение var вместо адреса var mem без копирования адреса var mem в регистр?

С уважением

6
задан Nemo 21 August 2011 в 16:07
поделиться