繁体   English   中英

将偏移量从堆栈/框架指针传递到GCC内联汇编的变量

[英]Pass offset from stack/frame pointer to variable to GCC inline assembly

在所有GCC版本中,不适合寄存器的局部变量都存储在堆栈中。 为了访问它们,可以使用[ESP + n]或[EBP-n]之类的构造,其中n可能涉及变量内的偏移量。

将此类变量作为操作数传递给GCC内联汇编时,将使用备用寄存器存储计算出的地址。 有没有一种方法可以将操作数指定为“此变量的基址寄存器”和/或“此变量相对于基址寄存器的偏移量”?

如果你做类似的事情

int stackvar; ... asm ("...":"r"(stackvar))

您强制GCC将stackvar加载到寄存器中。 如果添加m约束,则不会:

int stackvar; ... asm ("...":"rm"(stackvar))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM