我尝试使用谷歌搜索,但我找不到足够的信息来理解我的信息。
int i;
char msg1[] = "odd";
char msg2[] = "even";
char *ptr;
__asm__(" \
movl i, %eax\n\
andl $1, %eax\n\
jz zero\n\
movl $msg1, %eax\n\
jmp done\n\
zero:\n\
movl $msg2, %eax\n\
done:\n\
movl %eax, ptr\n\
");
为什么有些人需要$
而其他人(例如i)没有$
个符号?
答案 0 :(得分:2)
$1
是常数
`andl $1, %eax` this means do AND of 1 and EAX register.
$
在前面有前缀并且具有直接价值。
msg1和msg1是两个数组的地址。所以它们的前缀是$
。
i
是一个c变量。使用memory access
(间接引用)访问哪个。
选中reference。
答案 1 :(得分:1)
Constants
需要以"$"
为前缀。
movl $msg1, %eax\n\
美元符号意味着一个常数,$msg1
也是如此。这里的常量是msg1
的地址。
答案 2 :(得分:0)
$这里和&在C / C ++中意为地址