x86 c linux内联asm混乱寄存器
我试图获取堆栈指针并将其保存到我的c程序中的局部变量中x86 c linux内联asm混乱寄存器,c,linux,assembly,C,Linux,Assembly,我试图获取堆栈指针并将其保存到我的c程序中的局部变量中 int stack_pointer; asm("movl %%esp, %0;":"=r"(stack_pointer)); 在这一行之后,我还有其他函数调用和代码。 然而,他们的输出是混乱的。我怀疑这一行修改了寄存器,没有将其更改回原始值。如何解决此问题?您是否尝试为函数获取程序集输出gcc-S…我想当GAS看到一个“;”字符(而不是“\n”),它会自动切换到“mangle模式”,并且不会告诉您有语法错误。@Brendan在GAS x8
int stack_pointer;
asm("movl %%esp, %0;":"=r"(stack_pointer));
在这一行之后,我还有其他函数调用和代码。
然而,他们的输出是混乱的。我怀疑这一行修改了寄存器,没有将其更改回原始值。如何解决此问题?您是否尝试为函数获取程序集输出
gcc-S
…我想当GAS看到一个“;”字符(而不是“\n”),它会自动切换到“mangle模式”,并且不会告诉您有语法错误。@Brendan
在GAS x86中不是语法错误。它用于分隔语句。把一个放在一行的末尾是很好的,我把它修好了。因为我没有冲洗我的厕所