簡體   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