Я пытаюсь понять некоторые вещи о встроенном ассемблере в 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 в регистр?
С уважением