GCC内联汇编程序访问参数?

时间:2013-01-12 23:00:12

标签: gcc gas

我需要从C函数

访问一个参数

void printk(char * msg);

并将其存储到ESI中。但是我无法做到

mov $msg, %esi

mov $_msg, %esi

两者都返回一个链接器错误(假设符号msg或_msg未定义。我很确定我可以通过从堆栈中读取来访问msg但是在我的汇编代码中访问符号msg会更容易。这是甚至可能在GCC?

1 个答案:

答案 0 :(得分:1)

您不能在GCC内联汇编中引用类似的变量。我想你想要的东西:

 ask("mov %[msg], %%esi",
     : /* no outputs */
     : [msg] "r" (msg)
     : "esi");