Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
x86 c linux内联asm混乱寄存器_C_Linux_Assembly - Fatal编程技术网

x86 c linux内联asm混乱寄存器

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

我试图获取堆栈指针并将其保存到我的c程序中的局部变量中

int stack_pointer;
asm("movl %%esp, %0;":"=r"(stack_pointer));
在这一行之后,我还有其他函数调用和代码。
然而,他们的输出是混乱的。我怀疑这一行修改了寄存器,没有将其更改回原始值。如何解决此问题?

您是否尝试为函数获取程序集输出
gcc-S
…我想当GAS看到一个“;”字符(而不是“\n”),它会自动切换到“mangle模式”,并且不会告诉您有语法错误。@Brendan
在GAS x86中不是语法错误。它用于分隔语句。把一个放在一行的末尾是很好的,我把它修好了。因为我没有冲洗我的厕所