我在gcc中使用内联汇编程序(在Linux下)。 我写了这个简单的程序:
char *str="hello world";
int main(int argc, char *argv[]
{
...
asm("mov %0, %%rcx"
:
: "g" (str));
...
}
我使用这种奇怪的语法在rcx寄存器中写入字符串的地址。 但是当我反汇编二进制文件时,我发现数据首先在rax中传输,然后在rcx中传输。你可以想象,这可以在我的程序中引入一些bord效果...... 当我年轻的时候,我曾经写过类似的东西:
asm("mov _str, rcx")
但它在Linux gcc上不起作用......为什么?
答案 0 :(得分:-1)
char *str="hello world"; ... asm("mov _str, rcx")
但它在Linux gcc上不起作用......为什么?
gcc的错误消息应该说明原因。最可能的原因是
像asm("mov str, %cx")
这样的东西。