att汇编传递参数,不知该怎么写,求助
intel下
mov eax, [eax + 0x1c]
改为att汇编
"mov 0x1c(%%eax), %%eax;"
其中0x1c希望通过参数传递
像下面这样
asm (
"mov %0(%%eax), %%eax;"
:
: "m" ( para )
:
);
这样编译报错,不知道该怎么写了,求解 汇编 asm
[解决办法]
#include <stdio.h>
int foo( char offset )
{
char a[100] = {0};
char *b = a;
a[0x1c] = 99;
a[0x2c] = 98;
int p = 0;
__asm__ __volatile__(
"movl (%1,%2), %0\n"
: "=r" (p) : "r" (b), "r" ((int)offset)
);
printf( " a[0x%X] = %d\n", offset, p );
return 0;
}
int main(int argc, char** argv)
{
foo ( 0x1c ); /* .. a[0x1c] = 99 */
foo ( 0x2c ); /* .. a[0x2c] = 98 */
return 0;
}