使用AT&T语法通过内联汇编访问数组

我想使用AT& T语法使用内联汇编来分配数组.我想要实现以下目标.请注意,这里的rsp是%rsp寄存器.

long saved_sp[N];
long new_sp[N];

void some_function( unsigned int tid, ... )
{
 // These two lines should be in assembly
 saved_sp[tid] = rsp; 
 rsp = new_sp[tid];   
 ......
}

解决方法:

我确定我不需要警告您…

__asm__ __volatile__ (

    "movq %%rsp, (%0, %2, 8)\n\t"
    "movq (%1, %2, 8), %%rsp\n\t"

    : : "r" (saved_sp), "r" (new_sp), "r" ((long) tid));

也许应该添加“内存”作为垃圾,但这似乎是多余的.无论执行此操作到哪里,请记住帧指针“%rbp”将失效.

上一篇:webActivatorEx 的使用


下一篇:80×86汇编-从Windows到Linux的非常基本的I / O程序转换